aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-01-25 18:18:33 +0000
committerGitHub <noreply@github.com>2022-01-25 18:18:33 +0000
commit41998005e56f01bb0d894bf8e0ca9e0ab1cda8c1 (patch)
tree8d6d6579ec6807f3b430bce8a606531c2846847d
parent4adb8b85517349f572994ae042eccf2d7327a2ee (diff)
parentb3dbe594ff98914d6e75cc8e6cc9f59afa9f7101 (diff)
downloadperlweeklychallenge-club-41998005e56f01bb0d894bf8e0ca9e0ab1cda8c1.tar.gz
perlweeklychallenge-club-41998005e56f01bb0d894bf8e0ca9e0ab1cda8c1.tar.bz2
perlweeklychallenge-club-41998005e56f01bb0d894bf8e0ca9e0ab1cda8c1.zip
Merge pull request #5559 from andemark/branch-for-challenge-149
Challenge 149 Solutions (Raku)
-rw-r--r--challenge-149/mark-anderson/raku/ch-1.raku15
-rw-r--r--challenge-149/mark-anderson/raku/ch-2.raku20
2 files changed, 35 insertions, 0 deletions
diff --git a/challenge-149/mark-anderson/raku/ch-1.raku b/challenge-149/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..7d595e5fe2
--- /dev/null
+++ b/challenge-149/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,15 @@
+#!/usr/bin/env raku
+
+use Test;
+
+is-deeply fibonacci-digit-sum(20),
+(0, 1, 2, 3, 5, 8, 10, 11, 12, 14, 17, 20, 21, 23, 26, 30, 32, 35, 41, 44);
+
+is fibonacci-digit-sum(10000).tail, 98809;
+
+sub fibonacci-digit-sum(\n)
+{
+ my @fib = 0, 1, * + * ... 55; # good enough for numbers <= 9,999,991
+
+ (^Inf).grep({ .comb.sum (elem) @fib })[^n];
+}
diff --git a/challenge-149/mark-anderson/raku/ch-2.raku b/challenge-149/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..4812afcd34
--- /dev/null
+++ b/challenge-149/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+use Test;
+
+is largest-square(2), '1';
+is largest-square(4), '3201';
+is largest-square(10), '9814072356';
+is largest-square(12), 'B8750A649321';
+
+sub largest-square(\base)
+{
+ my $d = (base.pred...0).map({.base(base)}).join
+ .parse-base(base).sqrt.floor;
+
+ loop
+ {
+ my \b = ($d-- ** 2).base(base);
+ return b if b.comb.Bag.values.max == 1;
+ }
+}