aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-01-20 18:09:12 +0000
committerGitHub <noreply@github.com>2020-01-20 18:09:12 +0000
commitd9b08aca77be967c36574376ada06ea8b76e4d63 (patch)
tree98a41665dfaf84a5a3930c36e1a2d75445a5a582
parent82131cfdef6a35e90af50b56e6f0f80164a9481d (diff)
parentf1551e2459c44173a6c16d210ad71ff84a6d1c0a (diff)
downloadperlweeklychallenge-club-d9b08aca77be967c36574376ada06ea8b76e4d63.tar.gz
perlweeklychallenge-club-d9b08aca77be967c36574376ada06ea8b76e4d63.tar.bz2
perlweeklychallenge-club-d9b08aca77be967c36574376ada06ea8b76e4d63.zip
Merge pull request #1153 from Firedrake/rogerbw-challenge-044
Solutions for challenge #44
-rwxr-xr-xchallenge-044/roger-bell-west/perl5/ch-1.pl33
-rwxr-xr-xchallenge-044/roger-bell-west/perl5/ch-2.pl19
-rwxr-xr-xchallenge-044/roger-bell-west/perl6/ch-1.p630
-rwxr-xr-xchallenge-044/roger-bell-west/perl6/ch-2.p616
4 files changed, 98 insertions, 0 deletions
diff --git a/challenge-044/roger-bell-west/perl5/ch-1.pl b/challenge-044/roger-bell-west/perl5/ch-1.pl
new file mode 100755
index 0000000000..5919024dea
--- /dev/null
+++ b/challenge-044/roger-bell-west/perl5/ch-1.pl
@@ -0,0 +1,33 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use integer;
+
+my @base=(1..9);
+
+my @sv=('','-','+');
+
+my $maxdepth=8;
+my @si=(0) x $maxdepth;
+
+while (1) {
+ my $str=join('',map {$base[$_].$sv[$si[$_]]} (0..$maxdepth-1)).$base[$maxdepth];
+ my $tot=eval($str);
+ if ($tot == 100) {
+ print "$str\n";
+ }
+ my $i=0;
+ while ($i < $maxdepth) {
+ $si[$i]++;
+ if ($si[$i] <= $#sv) {
+ last;
+ }
+ $si[$i]=0;
+ $i++;
+ }
+ if ($i >= $maxdepth) {
+ last;
+ }
+}
diff --git a/challenge-044/roger-bell-west/perl5/ch-2.pl b/challenge-044/roger-bell-west/perl5/ch-2.pl
new file mode 100755
index 0000000000..0eb09d116e
--- /dev/null
+++ b/challenge-044/roger-bell-west/perl5/ch-2.pl
@@ -0,0 +1,19 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use integer;
+
+my @seq=([1,[]]);
+my $goal=200;
+
+while (1) {
+ my $s=shift @seq;
+ if ($s->[0] == $goal) {
+ print join(', ',map {['double','add 1']->[$_]} @{$s->[1]}),"\n";
+ last;
+ }
+ push @seq,[$s->[0]*2,[@{$s->[1]},0]];
+ push @seq,[$s->[0]+1,[@{$s->[1]},1]];
+}
diff --git a/challenge-044/roger-bell-west/perl6/ch-1.p6 b/challenge-044/roger-bell-west/perl6/ch-1.p6
new file mode 100755
index 0000000000..863def1274
--- /dev/null
+++ b/challenge-044/roger-bell-west/perl6/ch-1.p6
@@ -0,0 +1,30 @@
+#! /usr/bin/perl6
+
+use MONKEY-SEE-NO-EVAL;
+
+my @base=(1..9);
+
+my @sv=('','-','+');
+
+my $maxdepth=8;
+my @si=0 xx $maxdepth;
+
+while (1) {
+ my $str=join('',map {@base[$_] ~ @sv[@si[$_]]}, (0..^$maxdepth)) ~ @base[$maxdepth];
+ my $tot=EVAL($str);
+ if ($tot == 100) {
+ print "$str\n";
+ }
+ my $i=0;
+ while ($i < $maxdepth) {
+ @si[$i]++;
+ if (@si[$i] <= @sv.end) {
+ last;
+ }
+ @si[$i]=0;
+ $i++;
+ }
+ if ($i >= $maxdepth) {
+ last;
+ }
+}
diff --git a/challenge-044/roger-bell-west/perl6/ch-2.p6 b/challenge-044/roger-bell-west/perl6/ch-2.p6
new file mode 100755
index 0000000000..e06e296d5a
--- /dev/null
+++ b/challenge-044/roger-bell-west/perl6/ch-2.p6
@@ -0,0 +1,16 @@
+#! /usr/bin/perl6
+
+my $goal=200;
+
+my @stack;
+
+for sprintf('%b',$goal).split('',:skip-empty) -> $op {
+ push @stack,'double';
+ if ($op == 1) {
+ push @stack,'add 1';
+ }
+}
+@stack.shift;
+@stack.shift;
+
+say join(', ',@stack);