aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-184/wambash/raku/ch-1.raku18
-rw-r--r--challenge-184/wambash/raku/ch-2.raku26
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-184/wambash/raku/ch-1.raku b/challenge-184/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..d6d06adf01
--- /dev/null
+++ b/challenge-184/wambash/raku/ch-1.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/env raku
+
+sub sequence-number (+@list) {
+ @list.map: {
+ .subst: rx/^<:L> ** 2/, ($++).fmt: "%02d"
+ }
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is sequence-number('ab1234', 'cd5678', 'ef1342'),('001234', '015678', '021342');
+ is sequence-number('pq1122', 'rs3334'),('001122', '013334');
+ done-testing;
+}
+
+multi MAIN (+@list) {
+ put sequence-number @list
+}
diff --git a/challenge-184/wambash/raku/ch-2.raku b/challenge-184/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..dc9e2dca2b
--- /dev/null
+++ b/challenge-184/wambash/raku/ch-2.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/env raku
+
+multi split-array (Str $s) {
+ $s
+ andthen .words
+ andthen .classify: *.uniprop
+}
+
+multi split-array (+@s) {
+ @s
+ andthen .map: { split-array $_ }\
+ andthen .flat
+ andthen .classify: *.key, as => *.value
+}
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is-deeply split-array('a 1 2 b 0')<Ll Nd>,( ['a', 'b'], ['1', '2', '0']);
+ is-deeply split-array('3 c 4 d')<Ll Nd>,( ['c', 'd'], ['3', '4']);
+ is-deeply split-array('a 1 2 b 0','3 c 4 d')<Ll Nd>,( [['a', 'b'],['c','d']], [['1', '2', '0'],['3','4']]);
+ is-deeply split-array('1 2', 'p q r', 's 3', '4 5 t')<Nd Ll>,( [['1', '2'],['3',],['4','5']], [['p', 'q', 'r'],['s'],['t']]);
+ done-testing;
+}
+
+multi MAIN (*@s) {
+ say split-array @s
+}