aboutsummaryrefslogtreecommitdiff
path: root/challenge-064
diff options
context:
space:
mode:
authorchirvasitua <stuart-little@users.noreply.github.com>2020-11-16 15:12:54 -0500
committerchirvasitua <stuart-little@users.noreply.github.com>2020-11-16 15:12:54 -0500
commiteace7e3c5ca76602f560b18747bf935a93c9be19 (patch)
tree2d0306a700a944366bef7a15623021995cf78617 /challenge-064
parentcff21bb0b22502e3b0ef8a4f3946e5f921647115 (diff)
downloadperlweeklychallenge-club-eace7e3c5ca76602f560b18747bf935a93c9be19.tar.gz
perlweeklychallenge-club-eace7e3c5ca76602f560b18747bf935a93c9be19.tar.bz2
perlweeklychallenge-club-eace7e3c5ca76602f560b18747bf935a93c9be19.zip
initial commit on 064,066,067
Diffstat (limited to 'challenge-064')
-rw-r--r--challenge-064/stuart-little/README1
-rwxr-xr-xchallenge-064/stuart-little/raku/ch-1.p626
-rwxr-xr-xchallenge-064/stuart-little/raku/ch-2.p615
3 files changed, 42 insertions, 0 deletions
diff --git a/challenge-064/stuart-little/README b/challenge-064/stuart-little/README
new file mode 100644
index 0000000000..78439907de
--- /dev/null
+++ b/challenge-064/stuart-little/README
@@ -0,0 +1 @@
+Solutions by Stuart Little
diff --git a/challenge-064/stuart-little/raku/ch-1.p6 b/challenge-064/stuart-little/raku/ch-1.p6
new file mode 100755
index 0000000000..97673cbeb9
--- /dev/null
+++ b/challenge-064/stuart-little/raku/ch-1.p6
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl6
+use v6;
+
+my @gr=[
+ < 1 2 3 >,
+ < 4 5 6 >,
+ < 7 8 9 >,
+].map(*.map({ $_.Int })).map(*.Array);
+
+sub cost(@gr,$i,$j) {
+ $i==0 && return @gr[0][0..$j].sum;
+ $j==0 && return @gr[0..$i].map(*.[0]).sum;
+ return @gr[$i][$j]+min(cost(@gr,$i-1,$j),cost(@gr,$i,$j-1));
+}
+
+sub pth(@gr,@acc) {
+ @acc+1 == @gr + @gr[0] && return @acc;
+ given my ($x,$y) = @acc[0] {
+ when ($x >= 1) && (@gr.&cost($x,$y)-@gr.&cost($x-1,$y)==@gr[$x][$y]) { pth(@gr,(($x-1,$y), |@acc)) }
+ when ($y >= 1) && (@gr.&cost($x,$y)-@gr.&cost($x,$y-1)==@gr[$x][$y]) { pth(@gr,(($x,$y-1), |@acc)) }
+ }
+}
+
+say cost(@gr, @gr.elems-1, @gr[0].elems-1), ": ", pth(@gr, ((@gr-1,@gr[0]-1),)).map({ @gr[$_[0]][$_[1]] }).join(" -> ")
+
+# run as <script>
diff --git a/challenge-064/stuart-little/raku/ch-2.p6 b/challenge-064/stuart-little/raku/ch-2.p6
new file mode 100755
index 0000000000..93a9c2d763
--- /dev/null
+++ b/challenge-064/stuart-little/raku/ch-2.p6
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl6
+use v6;
+
+sub partw($w,@a,@acc) {
+ $w eq '' && return @acc;
+ @a.map({ $w.starts-with($_) && (partw($w.substr($_.chars),@a,(|@acc,$_))) })
+ .grep( *.so )
+}
+
+partw(@*ARGS[0],@*ARGS[1..*],())
+.map(*.flat)
+.say
+
+# run as <script> <target word> <array of space-separated words>
+