diff options
| author | Dave Jacoby <jacoby.david@gmail.com> | 2020-09-07 16:39:02 -0400 |
|---|---|---|
| committer | Dave Jacoby <jacoby.david@gmail.com> | 2020-09-07 16:39:02 -0400 |
| commit | 31ed17bdfd83e3981777fdee9deb897f07d226d3 (patch) | |
| tree | dbdc9c170361223387c9b1d00d214d5d2e9d16c4 /challenge-077/dave-jacoby | |
| parent | e3aba67107fab58b65fa2685009cc4e17b829e7c (diff) | |
| download | perlweeklychallenge-club-31ed17bdfd83e3981777fdee9deb897f07d226d3.tar.gz perlweeklychallenge-club-31ed17bdfd83e3981777fdee9deb897f07d226d3.tar.bz2 perlweeklychallenge-club-31ed17bdfd83e3981777fdee9deb897f07d226d3.zip | |
challenge changed to get *ALL*, not just *ONE*
Diffstat (limited to 'challenge-077/dave-jacoby')
| -rwxr-xr-x | challenge-077/dave-jacoby/perl/ch-1.pl | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/challenge-077/dave-jacoby/perl/ch-1.pl b/challenge-077/dave-jacoby/perl/ch-1.pl index 01ced86bbc..6dc2865d99 100755 --- a/challenge-077/dave-jacoby/perl/ch-1.pl +++ b/challenge-077/dave-jacoby/perl/ch-1.pl @@ -13,31 +13,36 @@ my $n = 9; GetOptions( 'n=i' => \$n ); croak "n < 1" if $n < 1; -my $x = fib_sum($n); -my $s = scalar $x->@*; -my $p = join ' + ', $x->@*; -say qq{$s as ($n = $p)}; +fib_sum($n); -# +# sub fib_sum ( $n ) { my @fib = reverse fib_list($n); my @list = ( [] ); + my @sums; my %no; while (@list) { my $entry = shift @list; - my $join = join ',', $entry->@*; - next if $no{$join}++; - for my $fib (@fib) { next if grep { $_ == $fib } $entry->@*; - my $new->@* = sort { $a <=> $b } $fib, $entry->@*; + my $new->@* = sort { $b <=> $a } $fib, $entry->@*; my $sum = sum0 $new->@*; + my $join = join ',', $new->@*; + next if $no{$join}++; push @list, $new if $sum < $n; - return $new if $sum == $n; + push @sums, $new if $sum == $n; + } + } + + if ( scalar @sums ) { + for my $sum (@sums) { + my $s = scalar $sum->@*; + my $p = join ' + ', $sum->@*; + say qq{$s as ($n = $p)}; } } - print 0 && exit; + else { print 0 } } # creates a list of fibonacci values where each value is |
