aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-09-16 22:44:43 +0100
committerGitHub <noreply@github.com>2025-09-16 22:44:43 +0100
commitadfaa13a22f58f66af6788c272bfaecfc6afb5d7 (patch)
treed8d49e737711a2c77c3a7b07a360f36d6f901917
parentfe361ee89d238b53b5b93c43e69abb92b8686d41 (diff)
parente2d13173f02d5f5feb8eb833e2988e7a84fad060 (diff)
downloadperlweeklychallenge-club-adfaa13a22f58f66af6788c272bfaecfc6afb5d7.tar.gz
perlweeklychallenge-club-adfaa13a22f58f66af6788c272bfaecfc6afb5d7.tar.bz2
perlweeklychallenge-club-adfaa13a22f58f66af6788c272bfaecfc6afb5d7.zip
Merge pull request #12690 from zapwai/branch-for-339
Week 339
-rw-r--r--challenge-339/zapwai/perl/ch-1.pl48
-rw-r--r--challenge-339/zapwai/perl/ch-2.pl27
2 files changed, 75 insertions, 0 deletions
diff --git a/challenge-339/zapwai/perl/ch-1.pl b/challenge-339/zapwai/perl/ch-1.pl
new file mode 100644
index 0000000000..73ae74679f
--- /dev/null
+++ b/challenge-339/zapwai/perl/ch-1.pl
@@ -0,0 +1,48 @@
+use v5.38;
+sub proc(@ints) {
+ say "Input: @ints";
+
+ my $max = 0;
+
+ for my $i (0 .. $#ints - 1) {
+ for my $j ($i + 1 .. $#ints) {
+ my $a = $ints[$i];
+ my $b = $ints[$j];
+
+ my $prod1 = $a*$b;
+
+ my @left;
+ for my $k (0 .. $#ints) {
+ push @left, $ints[$k] unless ($k == $i || $k == $j);
+ }
+
+ for my $I (0 .. $#left - 1) {
+ for my $J ($I + 1 .. $#left) {
+ my $c = $left[$I];
+ my $d = $left[$J];
+ my $prod2 = $c*$d;
+
+ # If diff is max, set and continue
+ my $diff = $prod1 - $prod2;
+ if ($diff > $max) {
+ $max = $diff;
+ }
+ }
+ }
+ }
+ }
+
+ say "Output: $max";
+}
+
+my @ints = (5,9,3,4,6);
+proc(@ints);
+
+@ints = (1,-2,3,-4);
+proc(@ints);
+@ints = (-3, -1, -2, -4);
+proc(@ints);
+@ints = (10, 2, 0, 5, 1);
+proc(@ints);
+@ints = (7,8,9,10,10);
+proc(@ints);
diff --git a/challenge-339/zapwai/perl/ch-2.pl b/challenge-339/zapwai/perl/ch-2.pl
new file mode 100644
index 0000000000..adf40307d2
--- /dev/null
+++ b/challenge-339/zapwai/perl/ch-2.pl
@@ -0,0 +1,27 @@
+use v5.38;
+
+sub proc(@g) {
+ say "Input: @g";
+ my $lvl;
+ my $max = $g[0];
+ for my $val (@g) {
+ $lvl += $val;
+ if ($lvl > $max) {
+ $max = $lvl;
+ }
+ }
+ $max = 0 if ($max < 0);
+ say "Output: $max";
+}
+
+my @gain = (-5,1,5,-9,2);
+proc(@gain);
+@gain = (10,10,10,-25);
+proc(@gain);
+@gain = (3,-4,2,5,-6,1);
+proc(@gain);
+@gain = (-1, -2, -3, -4);
+proc(@gain);
+@gain = (-10, 15, 5);
+proc(@gain);
+