aboutsummaryrefslogtreecommitdiff
path: root/challenge-339
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-10-01 09:44:55 +0100
committerGitHub <noreply@github.com>2025-10-01 09:44:55 +0100
commite6ac460e0e6a3ca241e02cd9eab4fbaa7ca0466b (patch)
treedfbf2f46426abdb0ae45a90a5bff39276a7b471a /challenge-339
parent388f2fde216807f8a8f658d52edb1d6a0027f9b7 (diff)
parentb4180cc53495ff49852ebdda54d9734c90a1cca7 (diff)
downloadperlweeklychallenge-club-e6ac460e0e6a3ca241e02cd9eab4fbaa7ca0466b.tar.gz
perlweeklychallenge-club-e6ac460e0e6a3ca241e02cd9eab4fbaa7ca0466b.tar.bz2
perlweeklychallenge-club-e6ac460e0e6a3ca241e02cd9eab4fbaa7ca0466b.zip
Merge pull request #12769 from jaldhar/challenge-339
Challenge 339 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-339')
-rw-r--r--challenge-339/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-339/jaldhar-h-vyas/perl/ch-1.pl64
-rwxr-xr-xchallenge-339/jaldhar-h-vyas/perl/ch-2.pl22
-rwxr-xr-xchallenge-339/jaldhar-h-vyas/raku/ch-1.sh3
-rwxr-xr-xchallenge-339/jaldhar-h-vyas/raku/ch-2.sh3
5 files changed, 93 insertions, 0 deletions
diff --git a/challenge-339/jaldhar-h-vyas/blog.txt b/challenge-339/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..156e5d8897
--- /dev/null
+++ b/challenge-339/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2025/10/perl_weekly_challenge_week_339.html
diff --git a/challenge-339/jaldhar-h-vyas/perl/ch-1.pl b/challenge-339/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..8fc9b5a748
--- /dev/null
+++ b/challenge-339/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+use 5.038;
+use warnings;
+
+sub combinations($listref, $length) {
+ my @list = @{$listref};
+
+ if ($length <= 1) {
+ return map { [$_] } @list;
+ }
+
+ my @combos;
+
+ for (my $i = 0; $i + $length <= scalar @list; $i++) {
+ my $val = $list[$i];
+ my @rest = @list[$i + 1 .. $#list];
+ for my $c (combinations(\@rest, $length - 1)) {
+ push @combos, [$val, @{$c}] ;
+ }
+ }
+
+ return @combos;
+}
+
+sub max(@arr) {
+ my $highest = '-inf';
+ for my $i (@arr) {
+ if ($i > $highest) {
+ $highest = $i;
+ }
+ }
+
+ return $highest;
+}
+
+sub permute(@arr) {
+ my @permutations;
+
+ my @idx = keys @arr;
+ while ( push @permutations, [@arr[@idx]] ) {
+ my $p = scalar @idx - 1;
+ while ($idx[$p-1] >= $idx[$p]) {
+ --$p;
+ }
+ my $q = $p;
+ if (!$q) {
+ last;
+ }
+ push @idx, reverse splice @idx, $p;
+ while ($idx[$p-1] > $idx[$q]) {
+ ++$q;
+ }
+ @idx[$p-1,$q]=@idx[$q,$p-1];
+ }
+
+ return @permutations;
+}
+
+sub productDifference($arr) {
+ return $arr->[0] * $arr->[1] - $arr->[2] * $arr->[3];
+}
+
+say max(map { max(map { productDifference($_) } permute @{$_}) } combinations(\@ARGV, 4));
+
diff --git a/challenge-339/jaldhar-h-vyas/perl/ch-2.pl b/challenge-339/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..ad51af3d42
--- /dev/null
+++ b/challenge-339/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+use 5.038;
+use warnings;
+
+sub max(@arr) {
+ my $highest = '-inf';
+ for my $i (@arr) {
+ if ($i > $highest) {
+ $highest = $i;
+ }
+ }
+
+ return $highest;
+}
+
+my @changes = (0);
+
+for (@ARGV) {
+ push @changes, $changes[-1] + $_;
+}
+
+say max(@changes); \ No newline at end of file
diff --git a/challenge-339/jaldhar-h-vyas/raku/ch-1.sh b/challenge-339/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..03aab43fad
--- /dev/null
+++ b/challenge-339/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '@*ARGS.combinations(4).map({.permutations.map({$_[0]*$_[1]-$_[2]*$_[3]}).max}).max.say' "$@" \ No newline at end of file
diff --git a/challenge-339/jaldhar-h-vyas/raku/ch-2.sh b/challenge-339/jaldhar-h-vyas/raku/ch-2.sh
new file mode 100755
index 0000000000..bfcbd50af7
--- /dev/null
+++ b/challenge-339/jaldhar-h-vyas/raku/ch-2.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e 'my @a=(0);for @*ARGS {@a.push(@a[*-1]+$_)};@a.max.say' "$@" \ No newline at end of file