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