diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-11-21 16:23:25 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-21 16:23:25 +0000 |
| commit | 84940aa58de7f73e55c734b06f86d4e386b5a43e (patch) | |
| tree | 942c989baae0b4d49b15f61ec68a7db6373dfaf8 | |
| parent | f3ea91bd39782213214604627beba0b90c4b121d (diff) | |
| parent | 76d541d487e55adde0e3f1ead7a39bbf0f9c029b (diff) | |
| download | perlweeklychallenge-club-84940aa58de7f73e55c734b06f86d4e386b5a43e.tar.gz perlweeklychallenge-club-84940aa58de7f73e55c734b06f86d4e386b5a43e.tar.bz2 perlweeklychallenge-club-84940aa58de7f73e55c734b06f86d4e386b5a43e.zip | |
Merge pull request #7129 from andemark/branch-for-challenge-192
Initial 192 (Raku)
| -rw-r--r-- | challenge-192/mark-anderson/raku/ch-1.raku | 12 | ||||
| -rw-r--r-- | challenge-192/mark-anderson/raku/ch-2.raku | 29 |
2 files changed, 41 insertions, 0 deletions
diff --git a/challenge-192/mark-anderson/raku/ch-1.raku b/challenge-192/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..866743e8e7 --- /dev/null +++ b/challenge-192/mark-anderson/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku +use Test; + +is binary-flip(5), 2; +is binary-flip(4), 3; +is binary-flip(6), 1; + +sub binary-flip($n) +{ + #(1 x $n.base(2).chars).parse-base(2) +^ $n + $n.base(2).trans('01' => '10').parse-base(2) +} diff --git a/challenge-192/mark-anderson/raku/ch-2.raku b/challenge-192/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..d236b2cf94 --- /dev/null +++ b/challenge-192/mark-anderson/raku/ch-2.raku @@ -0,0 +1,29 @@ +#!/usr/bin/env raku +use Test; + +is equal-distribution(< 1 0 5 >), 4; +is equal-distribution(< 0 2 0 >), -1; +is equal-distribution(< 0 3 0 >), 2; +is equal-distribution(< 1 0 2 5 7 >), 17; +is equal-distribution(< 1 0 5 2 7 >), 14; +is equal-distribution([1..101]), 85850; +is equal-distribution([101...1]), 85850; + +# Thanks to scimon, drbaggy, and others for simplifying this for me :) + +sub equal-distribution(*@a) +{ + my $avg = @a.sum / @a.elems; + return -1 unless $avg.narrow ~~ Int; + my $moves; + + for @a.rotor(2 => -1) + { + my $n = $avg - .[0]; + .[0] += $n; + .[1] -= $n; + $moves += abs($n) + } + + $moves +} |
