diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-06-13 07:22:51 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-06-13 07:22:51 +0200 |
| commit | d484c9dcf474c328f12fc5bd691d05e3aab50a3d (patch) | |
| tree | 2f30697204942ccf99d296acd40856791270afb8 | |
| parent | 64c8734af21c74abed92b0de04b68aa2676084f8 (diff) | |
| download | perlweeklychallenge-club-d484c9dcf474c328f12fc5bd691d05e3aab50a3d.tar.gz perlweeklychallenge-club-d484c9dcf474c328f12fc5bd691d05e3aab50a3d.tar.bz2 perlweeklychallenge-club-d484c9dcf474c328f12fc5bd691d05e3aab50a3d.zip | |
solutions week 116
| -rw-r--r-- | challenge-116/wambash/raku/ch-1.raku | 28 | ||||
| -rw-r--r-- | challenge-116/wambash/raku/ch-2.raku | 20 |
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-116/wambash/raku/ch-1.raku b/challenge-116/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..a0c594aa46 --- /dev/null +++ b/challenge-116/wambash/raku/ch-1.raku @@ -0,0 +1,28 @@ +#!/usr/bin/env raku + +sub get-adept ($d, $s) { + ([\~] $d .. *) Z=> [\,] $d .. * + andthen .first: *.key.join.chars ≥ $s.chars +} + +my regex number-sequence { + ^ + (\d+?)\d*: + & + <{with get-adept($0.Int,$/.orig) { make .value; .key } }> + $ +} + +multi MAIN ( Int $n ) { + say $n.match( &number-sequence ).made.fmt: '%d',',' +} + +multi MAIN (Bool :test($)) { + use Test; + is get-adept(12, 12131), '121314' => <12 13 14>; + is '1234'.match( &number-sequence ).made, <1 2 3 4>; + is '91011'.match( &number-sequence ).made, <9 10 11>; + is '10203'.match( &number-sequence ).made, <10203>; + is '12131214'.match( &number-sequence).made, <1213 1214>; + done-testing; +} diff --git a/challenge-116/wambash/raku/ch-2.raku b/challenge-116/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..9a97cc9c87 --- /dev/null +++ b/challenge-116/wambash/raku/ch-2.raku @@ -0,0 +1,20 @@ +#!/usr/bin/env raku + +sub sum-of-squares ($n) { + $n.comb + andthen .map: *² + andthen .sum + andthen $_ == .sqrt.Int**2 +} + +multi MAIN ( Int $n ) { + say +so sum-of-squares($n) +} + +multi MAIN (Bool :test($)) { + use Test; + is sum-of-squares(34),True; + is sum-of-squares(50),True; + is sum-of-squares(52),False; + done-testing; +} |
