diff options
| author | Roger Bell_West <roger@firedrake.org> | 2020-06-15 16:03:53 +0100 |
|---|---|---|
| committer | Roger Bell_West <roger@firedrake.org> | 2020-06-15 16:03:53 +0100 |
| commit | 4227acda016cb0215801aacbecfeffc574e38d3e (patch) | |
| tree | 67b01d0b886727286df8b9bace661eafd414cb26 | |
| parent | b9612ffb288e8011c490898a55b4f81ebf110fdd (diff) | |
| download | perlweeklychallenge-club-4227acda016cb0215801aacbecfeffc574e38d3e.tar.gz perlweeklychallenge-club-4227acda016cb0215801aacbecfeffc574e38d3e.tar.bz2 perlweeklychallenge-club-4227acda016cb0215801aacbecfeffc574e38d3e.zip | |
Solution for #65 part 1
| -rwxr-xr-x | challenge-065/roger-bell-west/perl/ch-1.pl | 33 | ||||
| -rwxr-xr-x | challenge-065/roger-bell-west/raku/ch-1.p6 | 28 |
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); |
