From 280e7c56691d90b0231043175ee405255b4150af Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Fri, 24 Jun 2022 10:37:13 +0200 Subject: solutions week 170 --- challenge-170/wambash/raku/ch-1.raku | 17 +++++++++++++++++ challenge-170/wambash/raku/ch-2.raku | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 challenge-170/wambash/raku/ch-1.raku create mode 100644 challenge-170/wambash/raku/ch-2.raku diff --git a/challenge-170/wambash/raku/ch-1.raku b/challenge-170/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..98d06d5165 --- /dev/null +++ b/challenge-170/wambash/raku/ch-1.raku @@ -0,0 +1,17 @@ +#!/usr/bin/env raku + +constant Primorial = ( + ^∞ + andthen .grep: *.is-prime + andthen 1, |[\*] $_ +); + +multi MAIN (Bool :test($)!) { + use Test; + is Primorial.head(5), (1,2,6,30,210); + done-testing; +} + +multi MAIN (UInt $n=10) { + put Primorial.head: $n +} diff --git a/challenge-170/wambash/raku/ch-2.raku b/challenge-170/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..24af4c6e47 --- /dev/null +++ b/challenge-170/wambash/raku/ch-2.raku @@ -0,0 +1,23 @@ +#!/usr/bin/env raku +my rule row { (\d+)+ %% ',' }; +my rule matrix { + %% ';' } + +sub kronecker-product (@a, @b) { + @a XX* @b + andthen .map: *.list +} + +multi MAIN (Bool :test($)!) { + use Test; + my @a:= ( 1,2; 3,4; ); + my @b:= ( 5,6; 7,8; ); + my @c:= ( 5,6,10,12; 7,8,14,16; 15,18,20,24; 21,24,28,32 ); + is-deeply kronecker-product(@a,@b), @c; + is '1,2'.match(&row)[0], (1,2); + is-deeply '1,2;3,4'.match(&matrix)».[0]».Int, ([1,2],[3,4]); + done-testing; +} + +multi MAIN ($a, $b) { + say kronecker-product $a.match(&matrix).».[0], $b.match(&matrix).».[0]; +} -- cgit