aboutsummaryrefslogtreecommitdiff
path: root/challenge-197
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-01-01 01:45:29 +0000
committerGitHub <noreply@github.com>2023-01-01 01:45:29 +0000
commitbbe77f7c8a77312d58b62c449a53746928e74811 (patch)
tree8b3485c0856176fbac4ce1caf9a008433b3cf26f /challenge-197
parentf664dcd2e2d0ac137f8e1062763367c69bddfbde (diff)
parent30e865b0362c495bc9ea06ec4076480ba729682e (diff)
downloadperlweeklychallenge-club-bbe77f7c8a77312d58b62c449a53746928e74811.tar.gz
perlweeklychallenge-club-bbe77f7c8a77312d58b62c449a53746928e74811.tar.bz2
perlweeklychallenge-club-bbe77f7c8a77312d58b62c449a53746928e74811.zip
Merge pull request #7328 from arnesom/branch-for-challenge-197
Arne Sommer
Diffstat (limited to 'challenge-197')
-rw-r--r--challenge-197/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-197/arne-sommer/raku/ch-1.raku10
-rwxr-xr-xchallenge-197/arne-sommer/raku/ch-2.raku17
-rwxr-xr-xchallenge-197/arne-sommer/raku/move-zero10
-rwxr-xr-xchallenge-197/arne-sommer/raku/move-zero-unravel24
-rwxr-xr-xchallenge-197/arne-sommer/raku/wiggle-sort17
-rwxr-xr-xchallenge-197/arne-sommer/raku/wiggle-sort-even17
7 files changed, 96 insertions, 0 deletions
diff --git a/challenge-197/arne-sommer/blog.txt b/challenge-197/arne-sommer/blog.txt
new file mode 100644
index 0000000000..3f2ba6b6b8
--- /dev/null
+++ b/challenge-197/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/zero-wiggle.html
diff --git a/challenge-197/arne-sommer/raku/ch-1.raku b/challenge-197/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..ecacb70367
--- /dev/null
+++ b/challenge-197/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,10 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ /^<[0..9]>*$/);
+
+my @non-zero = @list.grep: * != 0;
+my @zero = @list.grep: * == 0;
+
+my @wiggly = (@non-zero, @zero).flat;
+
+say "(", @wiggly.join(", "), ")";
diff --git a/challenge-197/arne-sommer/raku/ch-2.raku b/challenge-197/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..5e940db6ab
--- /dev/null
+++ b/challenge-197/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 1, :v(:$verbose));
+
+my $half = Int(@list.elems / 2);
+my @sorted = @list.sort.reverse;
+my @low = @sorted[$half .. Inf];
+my @high = @sorted[^$half];
+
+if $verbose
+{
+ say ":Sorted: @sorted[]";
+ say ":Lower half: @low[]";
+ say ":Higher half: @high[]";
+}
+
+say "(", roundrobin(@low, @high).flat.join(","), ")";
diff --git a/challenge-197/arne-sommer/raku/move-zero b/challenge-197/arne-sommer/raku/move-zero
new file mode 100755
index 0000000000..ecacb70367
--- /dev/null
+++ b/challenge-197/arne-sommer/raku/move-zero
@@ -0,0 +1,10 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ /^<[0..9]>*$/);
+
+my @non-zero = @list.grep: * != 0;
+my @zero = @list.grep: * == 0;
+
+my @wiggly = (@non-zero, @zero).flat;
+
+say "(", @wiggly.join(", "), ")";
diff --git a/challenge-197/arne-sommer/raku/move-zero-unravel b/challenge-197/arne-sommer/raku/move-zero-unravel
new file mode 100755
index 0000000000..a65378cbe4
--- /dev/null
+++ b/challenge-197/arne-sommer/raku/move-zero-unravel
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ /^<[0..9]>*$/);
+
+sub unravel(@list, $coderef)
+{
+ my @match;
+ my @nomatch;
+
+ for @list -> $elem
+ {
+ $coderef($elem)
+ ?? @match.push: $elem.Int
+ !! @nomatch.push: $elem.Int;
+ }
+
+ return @match, @nomatch;
+}
+
+my ($non-zero, $zero) = unravel(@list, { $_ != 0 } );
+
+my @wiggly = ($non-zero.List, $zero.List).flat;
+
+say "(", @wiggly.join(", "), ")";
diff --git a/challenge-197/arne-sommer/raku/wiggle-sort b/challenge-197/arne-sommer/raku/wiggle-sort
new file mode 100755
index 0000000000..5e940db6ab
--- /dev/null
+++ b/challenge-197/arne-sommer/raku/wiggle-sort
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 1, :v(:$verbose));
+
+my $half = Int(@list.elems / 2);
+my @sorted = @list.sort.reverse;
+my @low = @sorted[$half .. Inf];
+my @high = @sorted[^$half];
+
+if $verbose
+{
+ say ":Sorted: @sorted[]";
+ say ":Lower half: @low[]";
+ say ":Higher half: @high[]";
+}
+
+say "(", roundrobin(@low, @high).flat.join(","), ")";
diff --git a/challenge-197/arne-sommer/raku/wiggle-sort-even b/challenge-197/arne-sommer/raku/wiggle-sort-even
new file mode 100755
index 0000000000..f3f0dc7a00
--- /dev/null
+++ b/challenge-197/arne-sommer/raku/wiggle-sort-even
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 1 && @list.elems %% 2, :v(:$verbose));
+
+my $half = @list.elems / 2;
+my @sorted = @list.sort.reverse;
+my @low = @sorted[$half .. Inf];
+my @high = @sorted[^$half];
+
+if $verbose
+{
+ say ":Sorted: @sorted[]";
+ say ":Lower half: @low[]";
+ say ":Higher half: @high[]";
+}
+
+say "(", (@low Z @high).flat.join(","), ")";