diff options
| -rw-r--r-- | challenge-306/mark-anderson/raku/ch-1.raku | 10 | ||||
| -rw-r--r-- | challenge-306/mark-anderson/raku/ch-2.raku | 27 |
2 files changed, 37 insertions, 0 deletions
diff --git a/challenge-306/mark-anderson/raku/ch-1.raku b/challenge-306/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..4958c9d823 --- /dev/null +++ b/challenge-306/mark-anderson/raku/ch-1.raku @@ -0,0 +1,10 @@ +#!/usr/bin/env raku +use Test; + +is odd-sum(2,5,3,6,4), 77; +is odd-sum(1,3), 4; + +sub odd-sum(+@ints) +{ + sum flat (1,3...@ints.elems).map(-> $n { @ints.rotor($n => -$n+1) }) +} diff --git a/challenge-306/mark-anderson/raku/ch-2.raku b/challenge-306/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..ee0213744e --- /dev/null +++ b/challenge-306/mark-anderson/raku/ch-2.raku @@ -0,0 +1,27 @@ +#!/usr/bin/env raku +use Test; + +is last-element(3,8,5,2,9,2), 1; +is last-element(3,2,5), 0; + +sub last-element(+@ints) +{ + my $bag = @ints.BagHash; + + while $bag.elems > 1 + { + my $a = $bag.max.key; + my $even = $bag{$a} %% 2; + + $bag{$a} = 0; + + unless $even + { + my $b = $bag.max.key; + $bag{$b}--; + $bag{$a-$b}++ + } + } + + $bag.values.head %% 2 ?? 0 !! $bag.keys.head +} |
