From d484c9dcf474c328f12fc5bd691d05e3aab50a3d Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 13 Jun 2021 07:22:51 +0200 Subject: solutions week 116 --- challenge-116/wambash/raku/ch-1.raku | 28 ++++++++++++++++++++++++++++ challenge-116/wambash/raku/ch-2.raku | 20 ++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 challenge-116/wambash/raku/ch-1.raku create mode 100644 challenge-116/wambash/raku/ch-2.raku 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; +} -- cgit