diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2022-01-24 07:38:28 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2022-01-24 07:38:28 +0000 |
| commit | b3dbe594ff98914d6e75cc8e6cc9f59afa9f7101 (patch) | |
| tree | 3677f4d200ff989036ab9e5127d90279f49b5e54 | |
| parent | 58fe0dd310fd5641512650fa783103ddbb5fc384 (diff) | |
| download | perlweeklychallenge-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.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; + } +} |
