From 9a29e677aeea1b616e6fcf9eff5dc4e92f36b98f Mon Sep 17 00:00:00 2001 From: Avery Adams Date: Thu, 25 May 2023 06:10:17 +1200 Subject: Solution for task 1 for Avery Adams week 218 --- challenge-218/avery-adams/blog.txt | 1 + challenge-218/avery-adams/blog1.txt | 1 + challenge-218/avery-adams/perl/ch-1.pl | 36 ++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 challenge-218/avery-adams/blog.txt create mode 100644 challenge-218/avery-adams/blog1.txt create mode 100644 challenge-218/avery-adams/perl/ch-1.pl diff --git a/challenge-218/avery-adams/blog.txt b/challenge-218/avery-adams/blog.txt new file mode 100644 index 0000000000..497b60280b --- /dev/null +++ b/challenge-218/avery-adams/blog.txt @@ -0,0 +1 @@ +https://dev.to/oldtechaa/perl-weekly-challenge-218-feeling-negative-3gdc \ No newline at end of file diff --git a/challenge-218/avery-adams/blog1.txt b/challenge-218/avery-adams/blog1.txt new file mode 100644 index 0000000000..4cf155ebd2 --- /dev/null +++ b/challenge-218/avery-adams/blog1.txt @@ -0,0 +1 @@ +https://blogs.perl.org/users/oldtechaa/2023/05/perl-weekly-challenge-218---feeling-negative.html \ No newline at end of file diff --git a/challenge-218/avery-adams/perl/ch-1.pl b/challenge-218/avery-adams/perl/ch-1.pl new file mode 100644 index 0000000000..1c5bad2be8 --- /dev/null +++ b/challenge-218/avery-adams/perl/ch-1.pl @@ -0,0 +1,36 @@ +#!/usr/bin/perl + +use strict; +use v5.24; + +my @sorted = sort {abs($b) <=> abs($a)} @ARGV; +my $complete; +until ($complete) { + my $negCount = isNeg($sorted[0]) + isNeg($sorted[1]) + isNeg($sorted[2]); + if ($negCount == 2 || $negCount == 0) { + $complete = 1; + } else { + my $positives; + for (2..$#sorted) { + $positives = 1 if !isNeg($sorted[$_]); + } + if ($positives) { + for (2, 1, 0) { + if (abs($sorted[$_]) == $sorted[$_]) { + next; + } else { + splice (@sorted, $_, 1); + last; + } + } + } else { + say $sorted[-1] * $sorted[-2] * $sorted[-3] and exit; + } + } +} +say $sorted[0] * $sorted[1] * $sorted[2]; + +sub isNeg { + my $num = shift; + return $num < 0 ? 1 : 0; +} -- cgit