aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-184/mark-anderson/raku/ch-1.raku13
-rw-r--r--challenge-184/mark-anderson/raku/ch-2.raku14
2 files changed, 27 insertions, 0 deletions
diff --git a/challenge-184/mark-anderson/raku/ch-1.raku b/challenge-184/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..437659af20
--- /dev/null
+++ b/challenge-184/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+
+say seq-num(< ab1234 cd5678 ef1342 >);
+say seq-num(< pq1122 rs3334 >);
+say seq-num(< ab1234 cd5678 ef1342 pq1122 rs3334
+ xy5529 zz9999 wx8822 hi4321 jr9876
+ br5050 er7752 us3435 mn1029 cd9368 >);
+
+sub seq-num(+$list)
+{
+ my $n = '00';
+ $list.map({ .subst(/^ <lower> ** 2 /, $n++) })
+}
diff --git a/challenge-184/mark-anderson/raku/ch-2.raku b/challenge-184/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..bffc9bd33c
--- /dev/null
+++ b/challenge-184/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,14 @@
+#!/usr/bin/env raku
+
+say split-array('a 1 2 b 0', '3 c 4 d');
+say split-array('1 2', 'p q r', 's 3', '4 5 t');
+
+sub split-array(+$list)
+{
+ my $loh := $list.map({ .comb(/\S/)
+ .classify({ /<lower>/ ?? 'letters' !! 'numbers' })
+ }).cache;
+
+ $loh.map({ .<numbers> if .<numbers> }),
+ $loh.map({ .<letters> if .<letters> })
+}