diff options
| -rw-r--r-- | challenge-336/mark-anderson/raku/ch-1.raku | 13 | ||||
| -rw-r--r-- | challenge-336/mark-anderson/raku/ch-2.raku | 26 |
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 +} |
