From c85799d4733d9bb1e3349e6468a293989ab63f61 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sat, 13 Nov 2021 12:32:33 +0100 Subject: solutions week 138 --- challenge-138/wambash/raku/ch-1.raku | 19 +++++++++++++++++++ challenge-138/wambash/raku/ch-2.raku | 24 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 challenge-138/wambash/raku/ch-1.raku create mode 100644 challenge-138/wambash/raku/ch-2.raku diff --git a/challenge-138/wambash/raku/ch-1.raku b/challenge-138/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..85e7bb1cfb --- /dev/null +++ b/challenge-138/wambash/raku/ch-1.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku + +sub workdays ( $year ) { + Date.new: :$year + andthen $_ ..^ .later: :1year + andthen .grep: *.day-of-week !== 6|7 + andthen .elems +} + +multi MAIN (Bool :test($)!) { + use Test; + is workdays(2021), 261; + is workdays(2020), 262; + done-testing; +} + +multi MAIN ( $year ) { + say workdays $year +} diff --git a/challenge-138/wambash/raku/ch-2.raku b/challenge-138/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..c4c215d2af --- /dev/null +++ b/challenge-138/wambash/raku/ch-2.raku @@ -0,0 +1,24 @@ +#!/usr/bin/env raku + +sub split-number ($n) { + 1 ..^ $n.chars + andthen .combinations + andthen .map: {0, |$_, $n.chars}\ + andthen .map: { .skip Z- $_ }\ + andthen .skip + andthen .map: { $n.comb.rotor($_) }\ + andthen .tree: *.Seq, *.sum, *.join + andthen .first: {$_² == $n}, :p +} + +multi MAIN (Bool :test($)!) { + use Test; + is split-number(9801), 1=> 99; + is split-number(81), 0 => 9; + is split-number(36), Nil; + done-testing; +} + +multi MAIN ($n) { + say +so split-number $n +} -- cgit