aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvery Adams <oldtechaa@gmail.com>2023-05-25 06:10:17 +1200
committerAvery Adams <oldtechaa@gmail.com>2023-05-25 06:10:17 +1200
commit9a29e677aeea1b616e6fcf9eff5dc4e92f36b98f (patch)
treed0da11c712d28a298e1323f55bd58b887b50cb87
parentf88ec70a8f56f1d4e7ecf28b0062d46b82f8b030 (diff)
downloadperlweeklychallenge-club-9a29e677aeea1b616e6fcf9eff5dc4e92f36b98f.tar.gz
perlweeklychallenge-club-9a29e677aeea1b616e6fcf9eff5dc4e92f36b98f.tar.bz2
perlweeklychallenge-club-9a29e677aeea1b616e6fcf9eff5dc4e92f36b98f.zip
Solution for task 1 for Avery Adams week 218
-rw-r--r--challenge-218/avery-adams/blog.txt1
-rw-r--r--challenge-218/avery-adams/blog1.txt1
-rw-r--r--challenge-218/avery-adams/perl/ch-1.pl36
3 files changed, 38 insertions, 0 deletions
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;
+}