diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-18 15:11:50 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-18 15:11:50 +0100 |
| commit | 79ccf021cd7eb2a7a6fccb7f2a6c640b185b25cc (patch) | |
| tree | 17c67802446dce0c8ffdb1939480ffddb754fa01 /challenge-061/mohammad-anwar | |
| parent | b4d8de1a3fb52e4a8a7bb6f899644c8f64954d0a (diff) | |
| download | perlweeklychallenge-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.pl | 28 | ||||
| -rw-r--r-- | challenge-061/mohammad-anwar/perl/ch-1a.pl | 31 |
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]; +} |
