diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-11-28 02:05:06 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-28 02:05:06 +0000 |
| commit | 69bf180b3be057e8dcafcc0da8eefb92f1f53288 (patch) | |
| tree | 13c0b5da59a8e47fdfbecbe63cc7bf8c683cae94 | |
| parent | a0e2a3048b94a4b2eb9a4cdc5e536f283fea82f1 (diff) | |
| parent | ee67e3894463948b8083e72800f48b7623694526 (diff) | |
| download | perlweeklychallenge-club-69bf180b3be057e8dcafcc0da8eefb92f1f53288.tar.gz perlweeklychallenge-club-69bf180b3be057e8dcafcc0da8eefb92f1f53288.tar.bz2 perlweeklychallenge-club-69bf180b3be057e8dcafcc0da8eefb92f1f53288.zip | |
Merge pull request #7168 from wambash/challenge-week-192
solutions week 192
| -rw-r--r-- | challenge-193/wambash/raku/ch-1.raku | 20 | ||||
| -rw-r--r-- | challenge-193/wambash/raku/ch-2.raku | 37 |
2 files changed, 57 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..7655c58aa3 --- /dev/null +++ b/challenge-193/wambash/raku/ch-1.raku @@ -0,0 +1,20 @@ +#!/usr/bin/env raku + +sub binary-flip ($n) { + $n + andthen .base(2) + andthen .trans: <0 1> => <1 0> + andthen :2( $_ ) +} + +multi MAIN (Bool :test($)!) { + use Test; + is binary-flip(5),2; + is binary-flip(4),3; + is binary-flip(6),1; + done-testing; +} + +multi MAIN ($n) { + say binary-flip $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..eacc0091cf --- /dev/null +++ b/challenge-193/wambash/raku/ch-2.raku @@ -0,0 +1,37 @@ +#!/usr/bin/env raku +# +my sub agg( $ ( :$average, :to-next($from-previous), :$moves, ), $n ) { + my $to-next = $from-previous + $n - $average; + + \( + :$average, + :$to-next, + moves => $moves + $to-next.abs , + ) +} + +sub equal-distribution (+@list) { + return Nil unless @list.sum %% @list.elems; + + my $average = @list.sum div @list.elems; + + @list + andthen \(:$average, :0moves, :0to-next,), .Slip + andthen .reduce: &agg + andthen .<moves> +} + +multi MAIN (Bool :test($)!) { + use Test; + is equal-distribution(1,0,5), 4; + is equal-distribution(1,2,3), 2; + is equal-distribution(1,2,3), 2; + is equal-distribution(0,2,0), Nil; + is equal-distribution(0,3,0), 2; + is equal-distribution(1..5), 10; + done-testing; +} + +multi MAIN (*@list) { + say equal-distribution(@list) // -1 +} |
