aboutsummaryrefslogtreecommitdiff
path: root/challenge-061
diff options
context:
space:
mode:
authorFung Cheok Yin <61836418+E7-87-83@users.noreply.github.com>2020-05-22 10:49:12 +0800
committerGitHub <noreply@github.com>2020-05-22 10:49:12 +0800
commitd726ef5c9a828bd1dd4aad4026f0303087848186 (patch)
treec9da851ddb8a14490292643da1eeb2e66251da93 /challenge-061
parent296107a5ad9e98066dbc091814d0afcd4d4a745f (diff)
downloadperlweeklychallenge-club-d726ef5c9a828bd1dd4aad4026f0303087848186.tar.gz
perlweeklychallenge-club-d726ef5c9a828bd1dd4aad4026f0303087848186.tar.bz2
perlweeklychallenge-club-d726ef5c9a828bd1dd4aad4026f0303087848186.zip
Add files via upload
Diffstat (limited to 'challenge-061')
-rw-r--r--challenge-061/cheok-yin-fung/perl/ch-1.pl58
1 files changed, 58 insertions, 0 deletions
diff --git a/challenge-061/cheok-yin-fung/perl/ch-1.pl b/challenge-061/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..148c3bc9f3
--- /dev/null
+++ b/challenge-061/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,58 @@
+#/usr/bin/perl
+use strict;
+my @original = @ARGV;
+#my @original = (9, 3,0, -1, 3, 9, -1);
+
+my $max = $original[0];
+my @anskey = ();
+for $_ (0..$#original) {
+ if ($original[$_] == $max) {
+ push @anskey, $_, "*";
+ }
+ if ($original[$_] > $max) {
+ $max = $original[$_];
+ @anskey = ();
+ push @anskey, $_, "*";
+ }
+}
+
+for my $i (0..$#original-1) {
+ for my $j ($i+1..$#original) {
+ my $prod = $original[$i];
+ for (my $h = $i+1; $h <= $j; $h++) {
+ $prod *= $original[$h] ;
+ }
+ if ($prod == $max) {
+ push @anskey, $i..$j, "*" ;
+ }
+ elsif ($prod > $max) {
+ @anskey = ();
+ $max = $prod;
+ push @anskey, $i..$j, "*";
+ }
+ }
+
+}
+
+#print "max:", $max, "\n";
+
+sub printans {
+ if ( @anskey != () ) {
+ print "[";
+ for my $i (0..$#anskey-1) {
+ if ( ($anskey[$i] eq "*") and ($i != $#anskey) ) {
+ print "], [";
+ }
+ elsif ($anskey[$i+1] ne "*" ) {
+ print "$original[$anskey[$i]], "
+ }
+ else {
+ print "$original[$anskey[$i]] ";
+ }
+ }
+ print "]";
+ }
+}
+
+printans;
+print "\n";