aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-334/wambash/raku/ch-1.raku20
-rw-r--r--challenge-334/wambash/raku/ch-2.raku22
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-334/wambash/raku/ch-1.raku b/challenge-334/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..e969729fb1
--- /dev/null
+++ b/challenge-334/wambash/raku/ch-1.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+sub range-sum (+ints,:$x,:$y) {
+ sum ints[$x..$y]
+
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is range-sum(-2, 0, 3, -5, 2, -1):0x:2y, 1;
+ is range-sum(1, -2, 3, -4, 5):1x:3y, -3;
+ is range-sum(1, 0, 2, -1, 3):3x:4y, 2;
+ is range-sum(-5, 4, -3, 2, -1, 0):0x:3y, -2;
+ is range-sum(-1, 0, 2, -3, -2, 1):0x:2y, 1;
+ done-testing;
+}
+
+ multi MAIN (+ints,:$x,:$y) {
+ say range-sum ints,:$x,:$y;
+}
diff --git a/challenge-334/wambash/raku/ch-2.raku b/challenge-334/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..3fcf5feb66
--- /dev/null
+++ b/challenge-334/wambash/raku/ch-2.raku
@@ -0,0 +1,22 @@
+#!/usr/bin/env raku
+
+sub nearest-valid-point (+points,:$x,:$y) {
+ points
+ andthen .grep: { $x == .[0] or $y == .[1] },:p
+ andthen .min: {abs(.value[0]-$x)+ abs(.value[1]-$y)}\
+ andthen $_ eqv ∞ ?? -1 !! .key
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is nearest-valid-point([1, 2], [3, 1], [2, 4], [2, 3]):3x:4y, 2;
+ is nearest-valid-point([3, 4], [2, 3], [1, 5], [2, 5]):2x:5y, 3;
+ is nearest-valid-point([2, 2], [3, 3], [4, 4]):1x:1y, -1;
+ is nearest-valid-point([0, 1], [1, 0], [0, 2], [2, 0]):0x:0y, 0;
+ is nearest-valid-point([5, 6], [6, 5], [5, 4], [4, 5]):5x:5y, 0;
+ done-testing;
+}
+
+multi MAIN (+points,:$x,:$y) {
+ say nearest-valid-point points».comb(/\d+/),:$x,:$y;
+}