aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-11-21 16:23:25 +0000
committerGitHub <noreply@github.com>2022-11-21 16:23:25 +0000
commit84940aa58de7f73e55c734b06f86d4e386b5a43e (patch)
tree942c989baae0b4d49b15f61ec68a7db6373dfaf8
parentf3ea91bd39782213214604627beba0b90c4b121d (diff)
parent76d541d487e55adde0e3f1ead7a39bbf0f9c029b (diff)
downloadperlweeklychallenge-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.raku12
-rw-r--r--challenge-192/mark-anderson/raku/ch-2.raku29
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
+}