diff options
| author | chirvasitua <stuart-little@users.noreply.github.com> | 2020-11-16 15:12:54 -0500 |
|---|---|---|
| committer | chirvasitua <stuart-little@users.noreply.github.com> | 2020-11-16 15:12:54 -0500 |
| commit | eace7e3c5ca76602f560b18747bf935a93c9be19 (patch) | |
| tree | 2d0306a700a944366bef7a15623021995cf78617 /challenge-064 | |
| parent | cff21bb0b22502e3b0ef8a4f3946e5f921647115 (diff) | |
| download | perlweeklychallenge-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/README | 1 | ||||
| -rwxr-xr-x | challenge-064/stuart-little/raku/ch-1.p6 | 26 | ||||
| -rwxr-xr-x | challenge-064/stuart-little/raku/ch-2.p6 | 15 |
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> + |
