aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2022-01-24 07:38:28 +0000
committerMark <53903062+andemark@users.noreply.github.com>2022-01-24 07:38:28 +0000
commitb3dbe594ff98914d6e75cc8e6cc9f59afa9f7101 (patch)
tree3677f4d200ff989036ab9e5127d90279f49b5e54
parent58fe0dd310fd5641512650fa783103ddbb5fc384 (diff)
downloadperlweeklychallenge-club-b3dbe594ff98914d6e75cc8e6cc9f59afa9f7101.tar.gz
perlweeklychallenge-club-b3dbe594ff98914d6e75cc8e6cc9f59afa9f7101.tar.bz2
perlweeklychallenge-club-b3dbe594ff98914d6e75cc8e6cc9f59afa9f7101.zip
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;
+ }
+}