aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-197/wambash/raku/ch-1.raku20
-rw-r--r--challenge-197/wambash/raku/ch-2.raku21
2 files changed, 41 insertions, 0 deletions
diff --git a/challenge-197/wambash/raku/ch-1.raku b/challenge-197/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..b5bf3924a2
--- /dev/null
+++ b/challenge-197/wambash/raku/ch-1.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+sub move-zero (+@list) {
+ @list
+ andthen .classify: * == 0
+ andthen .sort
+ andthen .map: |*.value
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is move-zero(1, 0, 3, 0, 0, 5),(1, 3, 5, 0, 0, 0);
+ is move-zero(1, 6, 4), (1, 6, 4);
+ is move-zero(0, 1, 0, 2, 0), (1, 2, 0, 0, 0);
+ done-testing;
+}
+
+multi MAIN (*@list) {
+ put move-zero @list
+}
diff --git a/challenge-197/wambash/raku/ch-2.raku b/challenge-197/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..dc59049a1c
--- /dev/null
+++ b/challenge-197/wambash/raku/ch-2.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+
+sub wiggle-sort (+@list) {
+ @list
+ andthen .sort
+ andthen .reverse
+ andthen roundrobin .[((.elems div 2) .. *),^(.elems div 2) ], :slip
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is wiggle-sort(1,5,1,1,6,4), (1,6,1,5,1,4);
+ is wiggle-sort(1,3,2,2,3,1), (2,3,1,3,1,2);
+ todo 'doesn\'t work for some list with odd number of elemnts';
+ is wiggle-sort(1,5,5), (5,1,5);
+ done-testing;
+}
+
+multi MAIN (*@list) {
+ put wiggle-sort @list
+}