aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-08-04 23:37:28 +0100
committerGitHub <noreply@github.com>2025-08-04 23:37:28 +0100
commit4c181aeb59eeb8ad2c00827c83d29e706ec53bda (patch)
tree711757a3aa2610182ad9ef7cde04b0b8a0f81bc9
parent04f639f89b73313e2208a8c88b8e197c9ab61eff (diff)
parent47179386d2c8614596eb2f8e2ee00488c4cf3531 (diff)
downloadperlweeklychallenge-club-4c181aeb59eeb8ad2c00827c83d29e706ec53bda.tar.gz
perlweeklychallenge-club-4c181aeb59eeb8ad2c00827c83d29e706ec53bda.tar.bz2
perlweeklychallenge-club-4c181aeb59eeb8ad2c00827c83d29e706ec53bda.zip
Merge pull request #12459 from ash/ash-333
Solutions Week 333 in Raku by @ash
-rw-r--r--challenge-333/ash/raku/ch-1.raku25
-rw-r--r--challenge-333/ash/raku/ch-2.raku17
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-333/ash/raku/ch-1.raku b/challenge-333/ash/raku/ch-1.raku
new file mode 100644
index 0000000000..e176d3dddd
--- /dev/null
+++ b/challenge-333/ash/raku/ch-1.raku
@@ -0,0 +1,25 @@
+# Task 1 of the Weekly Challenge 333
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-333/#TASK1
+
+say is-straight-line([2, 1], [2, 3], [2, 5]); # True
+say is-straight-line([1, 4], [3, 4], [10, 4]); # True
+say is-straight-line([0, 0], [1, 1], [2, 3]); # False
+say is-straight-line([1, 1], [1, 1], [1, 1]); # True
+say is-straight-line([1000000, 1000000], [2000000, 2000000], [3000000, 3000000]); # True
+
+
+sub is-straight-line(**@points) {
+ return True if @points.elems < 3;
+
+ my ($x0, $y0) = @points.shift;
+ my ($x1, $y1) = @points.shift;
+
+ my $dx = $x1 - $x0;
+ my $dy = $y1 - $y0;
+
+ for @points -> $point {
+ return False if $dy * ($point[0] - $x0) != $dx * ($point[1] - $y0);
+ }
+
+ return True;
+}
diff --git a/challenge-333/ash/raku/ch-2.raku b/challenge-333/ash/raku/ch-2.raku
new file mode 100644
index 0000000000..0d9359c8e2
--- /dev/null
+++ b/challenge-333/ash/raku/ch-2.raku
@@ -0,0 +1,17 @@
+# Task 2 of the Weekly Challenge 333
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-333/#TASK2
+
+say duplicate-zeros(1, 0, 2, 3, 0, 4, 5, 0); # (1 0 0 2 3 0 0 4)
+say duplicate-zeros(1, 2, 3); # (1 2 3)
+say duplicate-zeros(1, 2, 3, 0); # (1 2 3 0)
+say duplicate-zeros(0, 0, 1, 2); # (0 0 0 0)
+say duplicate-zeros(1, 2, 0, 3, 4); # (1, 2, 0, 0, 3)
+
+sub duplicate-zeros(*@data) {
+ my $len = @data.elems;
+
+ my @out;
+ $_ ?? @out.push($_) !! @out.push(0, 0) for @data;
+
+ return @out[^$len];
+}