diff options
| author | Dave Cross <d.cross@fairfx.com> | 2019-10-14 09:44:21 +0100 |
|---|---|---|
| committer | Dave Cross <d.cross@fairfx.com> | 2019-10-14 09:44:21 +0100 |
| commit | 3eb0e9bb142afaebcd86f00bdc62795568d48bb5 (patch) | |
| tree | 0261b79c9dce77c7caaa9d3ccbf99a7165511d58 | |
| parent | d9bd7dda457dcd9c90387b9c89a7ffa2353532e6 (diff) | |
| download | perlweeklychallenge-club-3eb0e9bb142afaebcd86f00bdc62795568d48bb5.tar.gz perlweeklychallenge-club-3eb0e9bb142afaebcd86f00bdc62795568d48bb5.tar.bz2 perlweeklychallenge-club-3eb0e9bb142afaebcd86f00bdc62795568d48bb5.zip | |
Challenge #30 Task #2
| -rw-r--r-- | challenge-030/dave-cross/perl5/ch-2.pl | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/challenge-030/dave-cross/perl5/ch-2.pl b/challenge-030/dave-cross/perl5/ch-2.pl new file mode 100644 index 0000000000..bc1e250f83 --- /dev/null +++ b/challenge-030/dave-cross/perl5/ch-2.pl @@ -0,0 +1,29 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use feature qw[say state]; + +use List::Util 'sum'; + +# If three numbers add to 12 then the +# highest number you can have is 10. +my $max = 10; + +for my $x (1 .. $max) { + for my $y (1 .. $max) { + for my $z (1 .. $max) { + say join ', ', $x, $y, $z if valid($x, $y, $z); + } + } +} + +sub valid { + state $seen; + + return if $seen->{join ',', sort { $a <=> $b} @_}; + return unless sum(@_) == 12; + return unless grep { ! ($_ % 2) } @_; + $seen->{join ',', sort { $a <=> $b} @_} = 1; + return 1; +} |
