aboutsummaryrefslogtreecommitdiff
path: root/challenge-051/dave-cross
diff options
context:
space:
mode:
authorDave Cross <dave@dave.org.uk>2020-03-09 08:39:55 +0000
committerDave Cross <dave@dave.org.uk>2020-03-09 08:39:55 +0000
commitb895d857b53695262cecf9062bcc841e42dfc437 (patch)
treee3a4476075cea8b30bfcf01d03341b9b55a18fd7 /challenge-051/dave-cross
parent21c6b3a2c1fd64b6ca44af33b67ae5f095acc940 (diff)
downloadperlweeklychallenge-club-b895d857b53695262cecf9062bcc841e42dfc437.tar.gz
perlweeklychallenge-club-b895d857b53695262cecf9062bcc841e42dfc437.tar.bz2
perlweeklychallenge-club-b895d857b53695262cecf9062bcc841e42dfc437.zip
Challenge #51 Task #1
Diffstat (limited to 'challenge-051/dave-cross')
-rw-r--r--challenge-051/dave-cross/ch-01.pl37
1 files changed, 37 insertions, 0 deletions
diff --git a/challenge-051/dave-cross/ch-01.pl b/challenge-051/dave-cross/ch-01.pl
new file mode 100644
index 0000000000..2ab91e554a
--- /dev/null
+++ b/challenge-051/dave-cross/ch-01.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/perl
+#
+# Note: As $a and $b are special variables in Perl, I've used
+# $x, $y and $z instead of $a, $b and $c.
+
+use strict;
+use warnings;
+use feature 'say';
+
+my $target = 0;
+
+my @numbers = sort { $a <=> $b } grep { /^-?\d+$/ } @ARGV;
+
+die "Usage: $0 [list of integers]\n" unless @numbers;
+
+for my $i (0 .. $#numbers - 1) {
+ my $x = $numbers[$i];
+ my $start = $i + 1;
+ my $end = $#numbers;
+
+ while ($start < $end) {
+ my $y = $numbers[$start];
+ my $z = $numbers[$end];
+
+ if ($x + $y + $z == $target) {
+ say "($x, $y, $z)";
+ $start++;
+ $end--;
+ } else {
+ if ($x + $y + $z > $target) {
+ $end--;
+ } else {
+ $start++;
+ }
+ }
+ }
+}