aboutsummaryrefslogtreecommitdiff
path: root/challenge-052
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-052')
-rw-r--r--challenge-052/stuart-little/README1
-rwxr-xr-xchallenge-052/stuart-little/raku/ch-1.p629
-rwxr-xr-xchallenge-052/stuart-little/raku/ch-2.p610
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>