aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2022-12-26 10:23:34 +0000
committerMark <53903062+andemark@users.noreply.github.com>2022-12-26 10:23:34 +0000
commit5e53ede2741debff8e09453e241c823979f0ea16 (patch)
treec87e1d349bf800814b81384241e4efcae9f0b436
parent63fb76188e132564e50feefd2d9d5b8491568948 (diff)
downloadperlweeklychallenge-club-5e53ede2741debff8e09453e241c823979f0ea16.tar.gz
perlweeklychallenge-club-5e53ede2741debff8e09453e241c823979f0ea16.tar.bz2
perlweeklychallenge-club-5e53ede2741debff8e09453e241c823979f0ea16.zip
Challenge 197 Solutions (Raku)
-rw-r--r--challenge-197/mark-anderson/raku/ch-1.raku13
-rw-r--r--challenge-197/mark-anderson/raku/ch-2.raku17
2 files changed, 30 insertions, 0 deletions
diff --git a/challenge-197/mark-anderson/raku/ch-1.raku b/challenge-197/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..07d7e9cfb5
--- /dev/null
+++ b/challenge-197/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+use Test;
+
+is-deeply move-zero(1,0,3,0,0,5), (1,3,5,0,0,0);
+is-deeply move-zero(1,6,4), (1,6,4);
+is-deeply move-zero(0,1,0,2,0), (1,2,0,0,0);
+
+sub move-zero(*@arr)
+{
+ my $c := classify { $_ == 0 ?? 'zeros' !! 'non-zeros' }, @arr;
+ $c<non-zeros>.append: flat $c<zeros> if $c<zeros>;
+ $c<non-zeros>.List
+}
diff --git a/challenge-197/mark-anderson/raku/ch-2.raku b/challenge-197/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..01ad3d233f
--- /dev/null
+++ b/challenge-197/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/env raku
+use Test;
+
+# My output might be different but I think it's still a wiggle sort.
+
+is-deeply wiggle-sort(1,5,1,1,6,4), (1,4,1,5,1,6);
+is-deeply wiggle-sort(1,3,2,2,3,1), (1,2,1,3,2,3);
+is-deeply wiggle-sort(1,1,1,2,2,2), (1,2,1,2,1,2);
+is-deeply wiggle-sort(1,2,3,4,5,6,7), (1,5,2,6,3,7,4);
+is-deeply wiggle-sort(1,2,3,4,5,6,7,8), (1,5,2,6,3,7,4,8);
+
+sub wiggle-sort(*@a)
+{
+ @a .= sort;
+ my $d = @a / 2;
+ flat roundrobin @a.head($d.ceiling), @a.tail($d.floor);
+}