aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-117/mark-anderson/raku/ch-1.raku2
-rw-r--r--challenge-117/mark-anderson/raku/ch-2.raku26
2 files changed, 27 insertions, 1 deletions
diff --git a/challenge-117/mark-anderson/raku/ch-1.raku b/challenge-117/mark-anderson/raku/ch-1.raku
index 01f14ebc9b..9f48a8baca 100644
--- a/challenge-117/mark-anderson/raku/ch-1.raku
+++ b/challenge-117/mark-anderson/raku/ch-1.raku
@@ -4,4 +4,4 @@ use Lingua::EN::Numbers;
my $n = (sum 1..15) - (sum 'file.txt'.IO.comb(/\d+/));
-say $n ~ ", Line " ~ cardinal($n).tc;
+say $n ~ ', Line ' ~ cardinal($n).tc;
diff --git a/challenge-117/mark-anderson/raku/ch-2.raku b/challenge-117/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..1c3414f88f
--- /dev/null
+++ b/challenge-117/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/env raku
+
+# took me a while to figure out why $x isn't equal to $r + $h - $l :(
+
+sub MAIN($n)
+{
+ traverse(0, 0, 0, $n, q{});
+}
+
+sub traverse($r, $l, $h, $n, $path)
+{
+ my $x = $r + $h;
+ my $y = $r + $l;
+
+ if all($x, $y) == $n
+ {
+ say $path;
+ }
+
+ else
+ {
+ traverse($r + 1, $l, $h, $n, $path ~ 'R') if $y < $n;
+ traverse($r, $l, $h + 1, $n, $path ~ 'H') if $h < $l;
+ traverse($r, $l + 1, $h, $n, $path ~ 'L') if $y < $n;
+ }
+}