diff options
| -rw-r--r-- | challenge-091/mark-anderson/raku/ch-1.raku | 27 | ||||
| -rw-r--r-- | challenge-091/mark-anderson/raku/ch-2.raku | 28 |
2 files changed, 55 insertions, 0 deletions
diff --git a/challenge-091/mark-anderson/raku/ch-1.raku b/challenge-091/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..e753537862 --- /dev/null +++ b/challenge-091/mark-anderson/raku/ch-1.raku @@ -0,0 +1,27 @@ +#!/usr/bin/env raku + +subset PositiveInt of UInt where * > 0; + +multi MAIN(PositiveInt $N) { + say count-number($N); +} + +multi MAIN { + use Test; + plan 4; + + ok count-number(1122234) == 21321314, "Example 1"; + ok count-number(2333445) == 12332415, "Example 2"; + ok count-number(12345) == 1112131415, "Example 3"; + ok count-number(11211) == 211221, "Repeated Number"; +} + +sub count-number(PositiveInt $N) { + my $result; + + for $N ~~ m:g/ (<[1..9]>) $0* / { + $result ~= .chars ~ ~.head; + } + + $result; +} diff --git a/challenge-091/mark-anderson/raku/ch-2.raku b/challenge-091/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..de2f82b22b --- /dev/null +++ b/challenge-091/mark-anderson/raku/ch-2.raku @@ -0,0 +1,28 @@ +#!/usr/bin/env raku + +# using the algorithm from this video... +# https://www.youtube.com/watch?v=Zb4eRjuPHbM + +multi MAIN(*@N where .all ~~ UInt) { + say jump-game(@N); +} + +multi MAIN { + use Test; + plan 2; + + ok jump-game([1, 2, 1, 2]), "Example 1"; + nok jump-game([2, 1, 1, 0, 2]), "Example 2"; +} + +sub jump-game(@N) { + my $last-good-index = @N.end; + + for $last-good-index-1...0 -> $i { + if @N[$i] >= $last-good-index - $i { + $last-good-index = $i; + } + } + + +not $last-good-index; +} |
