aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Cross <d.cross@fairfx.com>2019-10-14 09:44:21 +0100
committerDave Cross <d.cross@fairfx.com>2019-10-14 09:44:21 +0100
commit3eb0e9bb142afaebcd86f00bdc62795568d48bb5 (patch)
tree0261b79c9dce77c7caaa9d3ccbf99a7165511d58
parentd9bd7dda457dcd9c90387b9c89a7ffa2353532e6 (diff)
downloadperlweeklychallenge-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.pl29
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;
+}