aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-266/wambash/raku/ch-1.raku20
-rw-r--r--challenge-266/wambash/raku/ch-2.raku41
2 files changed, 61 insertions, 0 deletions
diff --git a/challenge-266/wambash/raku/ch-1.raku b/challenge-266/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..450372d232
--- /dev/null
+++ b/challenge-266/wambash/raku/ch-1.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+sub uncommon-words (+lines) {
+ lines
+ andthen .words
+ andthen .Bag
+ andthen .nodemap: * == 1
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ cmp-ok uncommon-words('Mango is sweet', 'Mango is sour'), &[≡],('sweet','sour');
+ cmp-ok uncommon-words('Mango is Mango', 'Orange is Orange'), &[≡], Empty;
+ cmp-ok uncommon-words('Mango Mango', 'Orange'), &[≡], ('Orange');
+ done-testing;
+}
+
+multi MAIN (+lines) {
+ put uncommon-words lines
+}
diff --git a/challenge-266/wambash/raku/ch-2.raku b/challenge-266/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..0e281291af
--- /dev/null
+++ b/challenge-266/wambash/raku/ch-2.raku
@@ -0,0 +1,41 @@
+#!/usr/bin/env raku
+
+sub x-matrix (+matrix) {
+ my $n = matrix.elems;
+ my @x-index = ( (^$n Z=> ^$n) Z, (^$n Z=> reverse ^$n) andthen .map: { set |$_ } );
+
+ matrix
+ andthen .pairs
+ andthen .map: { set .key «=>« |.value.grep: * !== 0,:k }\
+ andthen $_ Z≡ @x-index
+ andthen .all
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+
+ is x-matrix(
+ [1, 0, 0, 2],
+ [0, 3, 4, 0],
+ [0, 5, 6, 0],
+ [7, 0, 0, 1],
+ ), True;
+
+ is x-matrix(
+ [1, 2, 3],
+ [4, 5, 6],
+ [7, 8, 9],
+ ), False;
+
+ is x-matrix(
+ [1, 0, 2],
+ [0, 3, 0],
+ [4, 0, 5],
+ ), True;
+
+ done-testing;
+}
+
+multi MAIN (+matrix) {
+ say ?x-matrix matrix.map: *.comb: /\d+/
+}