diff options
| -rw-r--r-- | challenge-210/mark-anderson/raku/ch-1.raku | 12 | ||||
| -rw-r--r-- | challenge-210/mark-anderson/raku/ch-2.raku | 28 |
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-210/mark-anderson/raku/ch-1.raku b/challenge-210/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..bbecba6e17 --- /dev/null +++ b/challenge-210/mark-anderson/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku +use Test; + +# Ignore my earlier solution - I totally misunderstood the problem. 🤦 + +is kill-and-win(2,3,1), 6; +is kill-and-win(1,1,2,2,2,3), 11; + +sub kill-and-win(*@ints) +{ + sum @ints +} diff --git a/challenge-210/mark-anderson/raku/ch-2.raku b/challenge-210/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..8a150dcd56 --- /dev/null +++ b/challenge-210/mark-anderson/raku/ch-2.raku @@ -0,0 +1,28 @@ +#!/usr/bin/env raku +use Test; + +# I'm treating 0 as a positive number + +is-deeply number-collisions(2,3,-1), (2,3); +is-deeply number-collisions(3,2,-4), (-4,); +is-deeply number-collisions(-2,-1,-3,1,2,3), (-2,-1,-3,1,2,3); +is-deeply number-collisions(1,2,3,-3,-1), (1,2); +is-deeply number-collisions(-2,4,5,-3,-1,9,-8), (-2,4,5,9); +is-deeply number-collisions(12,43,-76,-8,88,-88,-19,11,2,-1,0,-99), (-76,-8,-19,-99); +is-deeply number-collisions(99,12,43,-76,-8,88,-88,-19,11,2,-1,0,-99), (); +is-deeply number-collisions(12,43,-76,-8,88,-88,-19,11,2,-1,0), (-76,-8,-19,11,2,0); + +sub number-collisions(*@a) +{ + given $_ = @a.join(' ') + { + while / <!after \-\d*> (\d+) \s (\-\d+) / + { + when $0 < $1.abs { .substr-rw($0.from, $0.to.succ - $0.from) = Empty } + when $0 > $1.abs { .substr-rw($1.from, $1.to.succ - $1.from) = Empty } + default { .substr-rw($0.from, $1.to.succ - $0.from) = Empty } + } + + .comb(/ \-? \d+ /)>>.Int + } +} |
