diff options
| -rw-r--r-- | challenge-334/wambash/raku/ch-1.raku | 20 | ||||
| -rw-r--r-- | challenge-334/wambash/raku/ch-2.raku | 22 |
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; +} |
