aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-01-16 23:50:44 +0000
committerGitHub <noreply@github.com>2025-01-16 23:50:44 +0000
commitdc7ec73a97cb4f1f09721570cf4fd035bfa09046 (patch)
treef1e3b8f9b2f774b7d5fea3c65090ab1a2138f455
parentc3025f506a1ade97522b381e51448dd6fc5833a9 (diff)
parentcc17f0c3810e0c19b1b048b90c397482c6ce7513 (diff)
downloadperlweeklychallenge-club-dc7ec73a97cb4f1f09721570cf4fd035bfa09046.tar.gz
perlweeklychallenge-club-dc7ec73a97cb4f1f09721570cf4fd035bfa09046.tar.bz2
perlweeklychallenge-club-dc7ec73a97cb4f1f09721570cf4fd035bfa09046.zip
Merge pull request #11453 from andemark/challenge-304
Challenge 304 Solutions (Raku)
-rw-r--r--challenge-304/mark-anderson/raku/ch-1.raku17
-rw-r--r--challenge-304/mark-anderson/raku/ch-2.raku12
2 files changed, 29 insertions, 0 deletions
diff --git a/challenge-304/mark-anderson/raku/ch-1.raku b/challenge-304/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..0ac6806bad
--- /dev/null
+++ b/challenge-304/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/env raku
+use Test;
+
+ok arrange-binary([1,0,0,0,1], 1);
+nok arrange-binary([1,0,0,0,1], 2);
+nok arrange-binary([0,0,0,1,0,0,0,0,1,0,0], 4);
+nok arrange-binary([0,0,0,1,0,0,0,1,0,0,0], 4);
+ok arrange-binary([0,0,0,1,0,0,0,1,0,0,0], 3);
+nok arrange-binary([0,0,1,0,0,0,0,1,0,0,0], 3);
+
+sub arrange-binary(@ints, $n)
+{
+ return False unless @ints.join ~~ m:g/00/ >= $n;
+ my $even = @ints.first(1,:k) %% 2;
+ my @mask = (flat $even ?? (0,1) xx * !! (1,0) xx *).head(@ints);
+ return not @mask.join.parse-base(2) +& @ints.join.parse-base(2)
+}
diff --git a/challenge-304/mark-anderson/raku/ch-2.raku b/challenge-304/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..6e59dcbeb7
--- /dev/null
+++ b/challenge-304/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+use Test;
+
+is max-avg([1,12,-5,-6,50,3], 4), 12.75;
+is max-avg([5], 1), 5;
+
+sub prefix:<x̄>(@list) { @list.sum / @list.elems }
+
+sub max-avg(@ints, $n)
+{
+ @ints.rotor($n => 1-$n).map(x̄ *).max
+}