aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-193/wambash/raku/ch-1.raku16
-rw-r--r--challenge-193/wambash/raku/ch-2.raku29
2 files changed, 45 insertions, 0 deletions
diff --git a/challenge-193/wambash/raku/ch-1.raku b/challenge-193/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..17beba4fd1
--- /dev/null
+++ b/challenge-193/wambash/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/env raku
+
+sub binary-string ($n) {
+ [X~] ^2 xx $n
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is binary-string(2), <00 01 10 11>;
+ is binary-string(3), <000 001 010 011 100 101 110 111>;
+ done-testing;
+}
+
+multi MAIN ($n) {
+ .put for binary-string $n
+}
diff --git a/challenge-193/wambash/raku/ch-2.raku b/challenge-193/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..aeb3e2e364
--- /dev/null
+++ b/challenge-193/wambash/raku/ch-2.raku
@@ -0,0 +1,29 @@
+#!/usr/bin/env raku
+
+sub difference-array ($s) {
+ $s
+ andthen .comb
+ andthen .map: &ord
+ andthen .cache
+ andthen .skip Z- $_
+ andthen .Capture
+}
+
+sub odd-string (+@s) {
+ @s
+ andthen .classify: &difference-array
+ andthen .values
+ andthen .grep: *.elems == 1
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is difference-array('wzy'), \(3,-1);
+ is odd-string(<adc wzy abc>),'abc';
+ is odd-string('aaa', 'bob', 'ccc', 'ddd'), 'bob';
+ done-testing;
+}
+
+multi MAIN (*@s) {
+ put odd-string @s
+}