aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2022-01-30 18:32:18 +0100
committerJan Krňávek <Jan.Krnavek@gmail.com>2022-01-30 18:32:18 +0100
commit982b9b9ece56ad21599989f4a0a50822ec64555a (patch)
tree1763d9bf9bb40dedc8e90c31e43765a15f0cc45f
parentdc6adce803a5d8affa26b0d58a4653866f0af722 (diff)
downloadperlweeklychallenge-club-982b9b9ece56ad21599989f4a0a50822ec64555a.tar.gz
perlweeklychallenge-club-982b9b9ece56ad21599989f4a0a50822ec64555a.tar.bz2
perlweeklychallenge-club-982b9b9ece56ad21599989f4a0a50822ec64555a.zip
solutions week 149
-rw-r--r--challenge-149/wambash/raku/ch-1.raku25
-rw-r--r--challenge-149/wambash/raku/ch-2.raku25
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-149/wambash/raku/ch-1.raku b/challenge-149/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..b8d3eb9ac5
--- /dev/null
+++ b/challenge-149/wambash/raku/ch-1.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/env raku
+
+constant @fibonacci = 0,1, * + * ... *;
+
+sub fibonacci-digit-sum ($n) {
+ $n
+ andthen .comb
+ andthen .sum
+ andthen { $_ == @fibonacci.first: * ≥ $_ }\
+}
+
+constant @fibonacci-digit-sum = ^Inf .grep: &fibonacci-digit-sum ;
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is fibonacci-digit-sum(23), True;
+ is fibonacci-digit-sum(24), False;
+ is fibonacci-digit-sum(99111), True;
+ is @fibonacci-digit-sum.head(20) , [0, 1, 2, 3, 5, 8, 10, 11, 12, 14, 17, 20, 21, 23, 26, 30, 32, 35, 41, 44];
+ done-testing;
+}
+
+multi MAIN ($n=20) {
+ put @fibonacci-digit-sum.head: $n
+}
diff --git a/challenge-149/wambash/raku/ch-2.raku b/challenge-149/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..8673ff5374
--- /dev/null
+++ b/challenge-149/wambash/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/env raku
+
+constant @square = ^Inf .map: *² ;
+
+sub largest-square (:$base=10) {
+ @square
+ andthen .map: *.base: $base
+ andthen .toggle: { .chars ≤ $base }\
+ andthen .first: !*.comb.repeated, :end
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is largest-square(),9814072356;
+ is largest-square(:2base), '1';
+ is largest-square(:4base), '3201';
+ is largest-square(:11base), 'A8701245369';
+ skip 'base 12 -- Too slow (cca 35s)';
+ #is largest-square(:12base), 'B8750A649321', 'base 12';
+ done-testing;
+}
+
+multi MAIN ($base=10) {
+ say largest-square :$base
+}