From 4227acda016cb0215801aacbecfeffc574e38d3e Mon Sep 17 00:00:00 2001 From: Roger Bell_West Date: Mon, 15 Jun 2020 16:03:53 +0100 Subject: Solution for #65 part 1 --- challenge-065/roger-bell-west/perl/ch-1.pl | 33 ++++++++++++++++++++++++++++++ challenge-065/roger-bell-west/raku/ch-1.p6 | 28 +++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100755 challenge-065/roger-bell-west/perl/ch-1.pl create mode 100755 challenge-065/roger-bell-west/raku/ch-1.p6 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); -- cgit