diff options
Diffstat (limited to 'challenge-052/stuart-little')
| -rw-r--r-- | challenge-052/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-052/stuart-little/raku/ch-1.p6 | 29 | ||||
| -rwxr-xr-x | challenge-052/stuart-little/raku/ch-2.p6 | 10 |
3 files changed, 40 insertions, 0 deletions
diff --git a/challenge-052/stuart-little/README b/challenge-052/stuart-little/README new file mode 100644 index 0000000000..78439907de --- /dev/null +++ b/challenge-052/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little diff --git a/challenge-052/stuart-little/raku/ch-1.p6 b/challenge-052/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..abe8385aff --- /dev/null +++ b/challenge-052/stuart-little/raku/ch-1.p6 @@ -0,0 +1,29 @@ +#!/usr/bin/env perl6 +use v6; + +sub p1max(@a where *.elems %% 2) { + given @a.elems { + when 0 { 0 } + when 2 { @a.max } + default { ( + @a[0] + (@a[2..*].&p1max, @a[1..^(@a-1)].&p1max).min, + @a[*-1] + (@a[1..^(@a-1)].&p1max, @a[0..^(@a-2)].&p1max).min + ).max } + } +} + +sub winner(@a) { + given @a.&p1max { + when * > @a.sum/2 {"Player 1 wins"} + when * < @a.sum/2 {"Player 2 wins"} + default {"Draw"} + } +} + + +my @coins=(1, 0.50, 0.01, 0.10, 0.05, 0.20, 2, 0.02); + +say "Best strategy for player 1 results in winning ", @coins.&p1max; +say @coins.&winner; + +# run as <script> diff --git a/challenge-052/stuart-little/raku/ch-2.p6 b/challenge-052/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..8c55a49ab4 --- /dev/null +++ b/challenge-052/stuart-little/raku/ch-2.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub isstep($n) { + (($n.split('',:skip-empty) Z- $n.substr(1..*).split('',:skip-empty)).all ~~ *.abs==1).Bool +} + +say (100..999).grep(&isstep); + +# run as <script> |
