aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Bell_West <roger@firedrake.org>2020-03-16 17:44:49 +0000
committerRoger Bell_West <roger@firedrake.org>2020-03-16 17:44:49 +0000
commitc9a0b3d6528e11123902e79065d025a523a6fb28 (patch)
treeed4c77a752390f7d5177825bee9753985e198341
parent388e2c7190fd7a065486b65f203531c0c31fd5e6 (diff)
downloadperlweeklychallenge-club-c9a0b3d6528e11123902e79065d025a523a6fb28.tar.gz
perlweeklychallenge-club-c9a0b3d6528e11123902e79065d025a523a6fb28.tar.bz2
perlweeklychallenge-club-c9a0b3d6528e11123902e79065d025a523a6fb28.zip
Solutions for challenge #52.
Thanks for all your work on this!
-rwxr-xr-xchallenge-052/roger-bell-west/perl5/ch-1.pl24
-rwxr-xr-xchallenge-052/roger-bell-west/perl5/ch-2.pl27
-rwxr-xr-xchallenge-052/roger-bell-west/perl6/ch-1.p617
-rwxr-xr-xchallenge-052/roger-bell-west/perl6/ch-2.p624
4 files changed, 92 insertions, 0 deletions
diff --git a/challenge-052/roger-bell-west/perl5/ch-1.pl b/challenge-052/roger-bell-west/perl5/ch-1.pl
new file mode 100755
index 0000000000..61208e9488
--- /dev/null
+++ b/challenge-052/roger-bell-west/perl5/ch-1.pl
@@ -0,0 +1,24 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+my @a=@ARGV;
+
+if ($a[0]>$a[1]) {
+ @a=($a[1],$a[0]);
+}
+
+foreach my $c ($a[0]..$a[1]) {
+ my @d=split '',$c;
+ my $v=1;
+ foreach my $i (0..$#d-1) {
+ if ($d[$i]+1 != $d[$i+1]) {
+ $v=0;
+ last;
+ }
+ }
+ if ($v) {
+ print "$c\n";
+ }
+}
diff --git a/challenge-052/roger-bell-west/perl5/ch-2.pl b/challenge-052/roger-bell-west/perl5/ch-2.pl
new file mode 100755
index 0000000000..9054cc37a3
--- /dev/null
+++ b/challenge-052/roger-bell-west/perl5/ch-2.pl
@@ -0,0 +1,27 @@
+#! /usr/bin/perl
+
+# see eventual blog post for why this is relevant
+
+use strict;
+use warnings;
+
+my $coins=8;
+
+foreach my $a (0..$coins-1) {
+ my @c=($a,$coins-1-$a);
+ while ($c[0]>2 || $c[1]>2) {
+ @c=sort @c;
+ $c[1]-=2;
+ }
+ my $toplay=0;
+ while ($c[0]>1 || $c[1]>1) {
+ @c=sort @c;
+ $c[1]--;
+ $toplay=1-$toplay;
+ }
+ @c=sort @c;
+ unless ($c[0]==0) {
+ $toplay=1-$toplay;
+ }
+ print "$a: $toplay wins\n";
+}
diff --git a/challenge-052/roger-bell-west/perl6/ch-1.p6 b/challenge-052/roger-bell-west/perl6/ch-1.p6
new file mode 100755
index 0000000000..b5ee8d87ac
--- /dev/null
+++ b/challenge-052/roger-bell-west/perl6/ch-1.p6
@@ -0,0 +1,17 @@
+#! /usr/bin/perl6
+
+my @a=@*ARGS;
+
+for min(@*ARGS)..max(@*ARGS) -> $c {
+ my @d=$c.comb(/./);
+ my $v=1;
+ for 0..@d.end-1 -> $i {
+ if (@d[$i]+1 != @d[$i+1]) {
+ $v=0;
+ last;
+ }
+ }
+ if ($v) {
+ say $c;
+ }
+}
diff --git a/challenge-052/roger-bell-west/perl6/ch-2.p6 b/challenge-052/roger-bell-west/perl6/ch-2.p6
new file mode 100755
index 0000000000..ed8114d681
--- /dev/null
+++ b/challenge-052/roger-bell-west/perl6/ch-2.p6
@@ -0,0 +1,24 @@
+#! /usr/bin/perl6
+
+# see eventual blog post for why this is relevant
+
+my $coins=8;
+
+for (0..$coins-1) -> $a {
+ my @c=($a,$coins-1-$a);
+ while (@c[0]>2 || @c[1]>2) {
+ @c=sort @c;
+ @c[1]-=2;
+ }
+ my $toplay=0;
+ while (@c[0]>1 || @c[1]>1) {
+ @c=sort @c;
+ @c[1]--;
+ $toplay=1-$toplay;
+ }
+ @c=sort @c;
+ unless (@c[0]==0) {
+ $toplay=1-$toplay;
+ }
+ say "$a left: player $toplay wins";
+}