aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2021-06-13 07:22:51 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2021-06-13 07:22:51 +0200
commitd484c9dcf474c328f12fc5bd691d05e3aab50a3d (patch)
tree2f30697204942ccf99d296acd40856791270afb8
parent64c8734af21c74abed92b0de04b68aa2676084f8 (diff)
downloadperlweeklychallenge-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.raku28
-rw-r--r--challenge-116/wambash/raku/ch-2.raku20
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;
+}