aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-336/mark-anderson/raku/ch-1.raku13
-rw-r--r--challenge-336/mark-anderson/raku/ch-2.raku26
2 files changed, 39 insertions, 0 deletions
diff --git a/challenge-336/mark-anderson/raku/ch-1.raku b/challenge-336/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..3891d4bdc4
--- /dev/null
+++ b/challenge-336/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+use Test;
+
+ok equal-group(1,1,2,2,2,2);
+nok equal-group(1,1,1,2,2,2,3,3);
+ok equal-group(5,5,5,5,5,5,7,7,7,7,7,7);
+nok equal-group(1,2,3,4);
+ok equal-group(8,8,9,9,10,10,11,11);
+
+sub equal-group(+@ints)
+{
+ ([gcd] @ints.Bag.values) > 1
+}
diff --git a/challenge-336/mark-anderson/raku/ch-2.raku b/challenge-336/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..cf309721a8
--- /dev/null
+++ b/challenge-336/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/env raku
+use Test;
+
+is final-score(< 5 2 C D + >), 30;
+is final-score(< 5 -2 4 C D 9 + + >), 27;
+is final-score(< 7 D D C + 3 >), 45;
+is final-score(< -5 -10 + D C + >), -55;
+is final-score(< 3 6 + D C 8 + D -2 C + >), 128;
+is final-score(< D C 3 6 + D C 8 + D -2 C + >), 128;
+is final-score(< C D 3 6 + D C 8 + D -2 C + >), 128;
+is final-score(< + C 3 6 + D C 8 + D -2 C + >), 128;
+
+sub final-score(@scores)
+{
+ my @stack;
+
+ for @scores
+ {
+ when Int { @stack.push: $_ }
+ when 'C' { @stack.pop }
+ when 'D' { quietly @stack.push: @stack.tail * 2 }
+ default { @stack.push: @stack.tail(2).sum }
+ }
+
+ @stack.sum
+}