diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-01-30 17:53:31 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-30 17:53:31 +0000 |
| commit | 597f08a3e8940b34029f1a469316d72ba11ef68e (patch) | |
| tree | 4f6af8b58b210e47fc19f02346ab369ea7250497 | |
| parent | df94b8a04e40fd0481f13e7f4316a6abe06a16dc (diff) | |
| parent | 982b9b9ece56ad21599989f4a0a50822ec64555a (diff) | |
| download | perlweeklychallenge-club-597f08a3e8940b34029f1a469316d72ba11ef68e.tar.gz perlweeklychallenge-club-597f08a3e8940b34029f1a469316d72ba11ef68e.tar.bz2 perlweeklychallenge-club-597f08a3e8940b34029f1a469316d72ba11ef68e.zip | |
Merge pull request #5586 from wambash/challenge-week-149
solutions week 149
| -rw-r--r-- | challenge-149/wambash/raku/ch-1.raku | 25 | ||||
| -rw-r--r-- | challenge-149/wambash/raku/ch-2.raku | 25 |
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 +} |
