diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-01-25 18:18:33 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-25 18:18:33 +0000 |
| commit | 41998005e56f01bb0d894bf8e0ca9e0ab1cda8c1 (patch) | |
| tree | 8d6d6579ec6807f3b430bce8a606531c2846847d | |
| parent | 4adb8b85517349f572994ae042eccf2d7327a2ee (diff) | |
| parent | b3dbe594ff98914d6e75cc8e6cc9f59afa9f7101 (diff) | |
| download | perlweeklychallenge-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.raku | 15 | ||||
| -rw-r--r-- | challenge-149/mark-anderson/raku/ch-2.raku | 20 |
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; + } +} |
