aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-138/wambash/raku/ch-1.raku19
-rw-r--r--challenge-138/wambash/raku/ch-2.raku24
2 files changed, 43 insertions, 0 deletions
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
+}