diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-06-15 16:09:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-15 16:09:45 +0100 |
| commit | e52c4439b84335a9a9cc761fd925bf0ff62fe9df (patch) | |
| tree | 67b01d0b886727286df8b9bace661eafd414cb26 | |
| parent | b9612ffb288e8011c490898a55b4f81ebf110fdd (diff) | |
| parent | 4227acda016cb0215801aacbecfeffc574e38d3e (diff) | |
| download | perlweeklychallenge-club-e52c4439b84335a9a9cc761fd925bf0ff62fe9df.tar.gz perlweeklychallenge-club-e52c4439b84335a9a9cc761fd925bf0ff62fe9df.tar.bz2 perlweeklychallenge-club-e52c4439b84335a9a9cc761fd925bf0ff62fe9df.zip | |
Merge pull request #1828 from Firedrake/rogerbw-challenge-065
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); |
