diff options
| author | Fung Cheok Yin <61836418+E7-87-83@users.noreply.github.com> | 2020-05-22 10:49:12 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-22 10:49:12 +0800 |
| commit | d726ef5c9a828bd1dd4aad4026f0303087848186 (patch) | |
| tree | c9da851ddb8a14490292643da1eeb2e66251da93 /challenge-061 | |
| parent | 296107a5ad9e98066dbc091814d0afcd4d4a745f (diff) | |
| download | perlweeklychallenge-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.pl | 58 |
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"; |
