diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-01-01 01:45:29 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-01 01:45:29 +0000 |
| commit | bbe77f7c8a77312d58b62c449a53746928e74811 (patch) | |
| tree | 8b3485c0856176fbac4ce1caf9a008433b3cf26f /challenge-197 | |
| parent | f664dcd2e2d0ac137f8e1062763367c69bddfbde (diff) | |
| parent | 30e865b0362c495bc9ea06ec4076480ba729682e (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-197/arne-sommer/raku/ch-1.raku | 10 | ||||
| -rwxr-xr-x | challenge-197/arne-sommer/raku/ch-2.raku | 17 | ||||
| -rwxr-xr-x | challenge-197/arne-sommer/raku/move-zero | 10 | ||||
| -rwxr-xr-x | challenge-197/arne-sommer/raku/move-zero-unravel | 24 | ||||
| -rwxr-xr-x | challenge-197/arne-sommer/raku/wiggle-sort | 17 | ||||
| -rwxr-xr-x | challenge-197/arne-sommer/raku/wiggle-sort-even | 17 |
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(","), ")"; |
