aboutsummaryrefslogtreecommitdiff
path: root/challenge-061/mohammad-anwar
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-18 15:11:50 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-18 15:11:50 +0100
commit79ccf021cd7eb2a7a6fccb7f2a6c640b185b25cc (patch)
tree17c67802446dce0c8ffdb1939480ffddb754fa01 /challenge-061/mohammad-anwar
parentb4d8de1a3fb52e4a8a7bb6f899644c8f64954d0a (diff)
downloadperlweeklychallenge-club-79ccf021cd7eb2a7a6fccb7f2a6c640b185b25cc.tar.gz
perlweeklychallenge-club-79ccf021cd7eb2a7a6fccb7f2a6c640b185b25cc.tar.bz2
perlweeklychallenge-club-79ccf021cd7eb2a7a6fccb7f2a6c640b185b25cc.zip
- Added solution to the "Product SubArray" task.
Diffstat (limited to 'challenge-061/mohammad-anwar')
-rw-r--r--challenge-061/mohammad-anwar/perl/ch-1.pl28
-rw-r--r--challenge-061/mohammad-anwar/perl/ch-1a.pl31
2 files changed, 59 insertions, 0 deletions
diff --git a/challenge-061/mohammad-anwar/perl/ch-1.pl b/challenge-061/mohammad-anwar/perl/ch-1.pl
new file mode 100644
index 0000000000..847a4c99c0
--- /dev/null
+++ b/challenge-061/mohammad-anwar/perl/ch-1.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $n = [ 2, 5, -1, 3 ];
+print sprintf("[ %s ] => %s\n", join(", ", @$n), max_product_subarray($n));
+
+sub max_product_subarray {
+ my ($array) = @_;
+
+ my $subarray = {};
+ foreach my $i (0 .. $#$array) {
+ foreach my $j ($i .. $#$array-1) {
+ my @x = ();
+ my $y = 1;
+ foreach my $k ($i .. ++$j) {
+ push @x, $array->[$k];
+ $y *= $array->[$k];
+ }
+ $subarray->{sprintf("[ %s ]", join ", ", @x)} = $y;
+ }
+ }
+
+ return [
+ sort { $subarray->{$b} <=> $subarray->{$a} } keys %$subarray
+ ]->[0];
+}
diff --git a/challenge-061/mohammad-anwar/perl/ch-1a.pl b/challenge-061/mohammad-anwar/perl/ch-1a.pl
new file mode 100644
index 0000000000..7d0e832a2f
--- /dev/null
+++ b/challenge-061/mohammad-anwar/perl/ch-1a.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+is( max_product_subarray([ 2, 5, -1, 3]), "[ 2, 5 ]" );
+
+done_testing;
+
+sub max_product_subarray {
+ my ($array) = @_;
+
+ my $subarray = {};
+ foreach my $i (0 .. $#$array) {
+ foreach my $j ($i .. $#$array-1) {
+ my @x = ();
+ my $y = 1;
+ foreach my $k ($i .. ++$j) {
+ push @x, $array->[$k];
+ $y *= $array->[$k];
+ }
+ $subarray->{sprintf("[ %s ]", join ", ", @x)} = $y;
+ }
+ }
+
+ return [
+ sort { $subarray->{$b} <=> $subarray->{$a} } keys %$subarray
+ ]->[0];
+}