aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-170/wambash/raku/ch-1.raku17
-rw-r--r--challenge-170/wambash/raku/ch-2.raku23
2 files changed, 40 insertions, 0 deletions
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 { <row>+ %% ';' }
+
+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)<row>».[0]».Int, ([1,2],[3,4]);
+ done-testing;
+}
+
+multi MAIN ($a, $b) {
+ say kronecker-product $a.match(&matrix).<row>».[0], $b.match(&matrix).<row>».[0];
+}