aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Bell_West <roger@firedrake.org>2020-06-15 16:03:53 +0100
committerRoger Bell_West <roger@firedrake.org>2020-06-15 16:03:53 +0100
commit4227acda016cb0215801aacbecfeffc574e38d3e (patch)
tree67b01d0b886727286df8b9bace661eafd414cb26
parentb9612ffb288e8011c490898a55b4f81ebf110fdd (diff)
downloadperlweeklychallenge-club-4227acda016cb0215801aacbecfeffc574e38d3e.tar.gz
perlweeklychallenge-club-4227acda016cb0215801aacbecfeffc574e38d3e.tar.bz2
perlweeklychallenge-club-4227acda016cb0215801aacbecfeffc574e38d3e.zip
Solution for #65 part 1
-rwxr-xr-xchallenge-065/roger-bell-west/perl/ch-1.pl33
-rwxr-xr-xchallenge-065/roger-bell-west/raku/ch-1.p628
2 files changed, 61 insertions, 0 deletions
diff --git a/challenge-065/roger-bell-west/perl/ch-1.pl b/challenge-065/roger-bell-west/perl/ch-1.pl
new file mode 100755
index 0000000000..c442c1025b
--- /dev/null
+++ b/challenge-065/roger-bell-west/perl/ch-1.pl
@@ -0,0 +1,33 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use List::Util qw(min);
+
+my $N = 2;
+my $S = 4;
+
+my @out;
+
+my @l;
+
+do {
+ my $n=[0];
+ if (@l) {
+ $n=shift @l;
+ }
+ my $s=pop @{$n};
+ if (scalar @{$n} == $N-1) {
+ my $digit=$S-$s;
+ if ($digit>=0 && $digit<=9) {
+ push @out,join('',@{$n},$digit);
+ }
+ } else {
+ foreach my $digit (($s==0?1:0)..min($S-$s,9)) {
+ push @l,[@{$n},$digit,$s+$digit];
+ }
+ }
+} while (@l);
+
+print join(', ',sort @out),"\n";
diff --git a/challenge-065/roger-bell-west/raku/ch-1.p6 b/challenge-065/roger-bell-west/raku/ch-1.p6
new file mode 100755
index 0000000000..9665e64f8b
--- /dev/null
+++ b/challenge-065/roger-bell-west/raku/ch-1.p6
@@ -0,0 +1,28 @@
+#! /usr/bin/perl6
+
+my $N = 2;
+my $S = 4;
+
+my @out;
+
+my @l;
+
+repeat {
+ my @n=(0,);
+ if (@l) {
+ @n=(shift @l).flat;
+ }
+ my $s=pop @n;
+ if (@n.elems == $N-1) {
+ my $digit=$S-$s;
+ if ($digit>=0 && $digit <= 9) {
+ push @out,join('',@n,$digit);
+ }
+ } else {
+ for (($s==0 ?? 1 !! 0)..min($S-$s,9)) -> $digit {
+ push @l,(map {$_},@n,$digit,$s+$digit);
+ }
+ }
+} while (@l);
+
+say join(', ',sort @out);