aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-08-04 23:37:08 +0100
committerGitHub <noreply@github.com>2025-08-04 23:37:08 +0100
commit04f639f89b73313e2208a8c88b8e197c9ab61eff (patch)
treea91ec369a88d95baf04b2d60504e1556fef4e61b
parentce2f933a023e15e5dac73508e56a9aec0e87fae6 (diff)
parent93cc7afeb7874a23a59528970bf8f8c7382c40b3 (diff)
downloadperlweeklychallenge-club-04f639f89b73313e2208a8c88b8e197c9ab61eff.tar.gz
perlweeklychallenge-club-04f639f89b73313e2208a8c88b8e197c9ab61eff.tar.bz2
perlweeklychallenge-club-04f639f89b73313e2208a8c88b8e197c9ab61eff.zip
Merge pull request #12458 from andemark/challenge-333
Challenge 333 Solutions (Raku)
-rw-r--r--challenge-333/mark-anderson/raku/ch-1.raku19
-rw-r--r--challenge-333/mark-anderson/raku/ch-2.raku22
2 files changed, 41 insertions, 0 deletions
diff --git a/challenge-333/mark-anderson/raku/ch-1.raku b/challenge-333/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..32a862d920
--- /dev/null
+++ b/challenge-333/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+use Test;
+
+ok straight-line([2,1], [2,3], [2,5]);
+ok straight-line([1,4], [3,4], [10,4]);
+nok straight-line([0,0], [1,1], [2,3]);
+ok straight-line([1,1], [1,1], [1,1]);
+ok straight-line([1000000,1000000], [2000000,2000000], [3000000,3000000]);
+
+sub straight-line(+@points)
+{
+ [==] @points.rotor(2 => -1).flat.map(&slope)
+}
+
+sub slope(@a, @b)
+{
+ my $m = (@b[1] - @a[1]) / (@b[0] - @a[0]);
+ $m.denominator ?? $m !! Inf
+}
diff --git a/challenge-333/mark-anderson/raku/ch-2.raku b/challenge-333/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..a837370ecb
--- /dev/null
+++ b/challenge-333/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,22 @@
+#!/usr/bin/env raku
+use v6.e.PREVIEW;
+use Test;
+
+is-deeply duplicate-zeros(1,0,2,3,0,4,5,0), (1,0,0,2,3,0,0,4);
+is-deeply duplicate-zeros(1,2,3), (1,2,3);
+is-deeply duplicate-zeros(1,2,3,0), (1,2,3,0);
+is-deeply duplicate-zeros(0,0,1,2), (0,0,0,0);
+is-deeply duplicate-zeros(1,2,0,3,4), (1,2,0,0,3);
+
+sub duplicate-zeros(+@ints)
+{
+ my $s := flat @ints.head ?? (*.so, *.not) xx *
+ !! (*.not, *.so ) xx *;
+
+ my $i := @ints.head ?? (1,3...*)
+ !! (0,2...*);
+
+ my @snips = @ints.snip($s);
+ @snips[$i] .= map({ $_ xx 2 });
+ @snips.flat(:hammer).head(@ints)
+}