aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-210/mark-anderson/raku/ch-1.raku12
-rw-r--r--challenge-210/mark-anderson/raku/ch-2.raku28
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
+ }
+}