diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-05-21 17:07:46 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-21 17:07:46 +0100 |
| commit | dbab85fcb904f3f790cb81771324a24862195c64 (patch) | |
| tree | ff29e57f054bf078745c48854ebab1a84226c274 | |
| parent | e37427228472a056de8ad934b46d1abd1388e24f (diff) | |
| parent | a5b0ef9bdabeebfaaab969bd935f5a49e019da78 (diff) | |
| download | perlweeklychallenge-club-dbab85fcb904f3f790cb81771324a24862195c64.tar.gz perlweeklychallenge-club-dbab85fcb904f3f790cb81771324a24862195c64.tar.bz2 perlweeklychallenge-club-dbab85fcb904f3f790cb81771324a24862195c64.zip | |
Merge pull request #1742 from sangeetkar/ch61
Ch61
| -rwxr-xr-x | challenge-061/sangeet-kar/perl/ch-1.pl | 27 | ||||
| -rwxr-xr-x | challenge-061/sangeet-kar/perl/ch-2.pl | 11 | ||||
| -rwxr-xr-x | challenge-061/sangeet-kar/raku/ch-1.raku | 11 | ||||
| -rwxr-xr-x | challenge-061/sangeet-kar/raku/ch-2.raku | 6 |
4 files changed, 55 insertions, 0 deletions
diff --git a/challenge-061/sangeet-kar/perl/ch-1.pl b/challenge-061/sangeet-kar/perl/ch-1.pl new file mode 100755 index 0000000000..31f7cf707e --- /dev/null +++ b/challenge-061/sangeet-kar/perl/ch-1.pl @@ -0,0 +1,27 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use List::Util qw/max pairvalues pairfirst/; + +sub maximise_product { + my $lst = shift; + my @results = (); + + for my $i (0..$#$lst) { + my $prod = 1; + for my $j ($i..$#$lst) { + $prod *= @$lst[$j]; + push @results, [$i, $j], $prod; + } + } + + my $max_prod = max pairvalues @results; + my ($sublist) = pairfirst {$b == $max_prod} @results; + return [@$lst[@$sublist[0] .. @$sublist[1]]]; +} + +print join(', ', maximise_product([2, 5, -1, 3])->@*), "\n"; + +## Trying some other examples +# say join(', ', maximise_product([0.5, 2, 3, -2, -1, 0])->@*); diff --git a/challenge-061/sangeet-kar/perl/ch-2.pl b/challenge-061/sangeet-kar/perl/ch-2.pl new file mode 100755 index 0000000000..bb9c0faaad --- /dev/null +++ b/challenge-061/sangeet-kar/perl/ch-2.pl @@ -0,0 +1,11 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use List::Util qw(all); + +my ($input) = @ARGV; +$input //= "25525511135"; + +my $digs = qr/(0|[^0]\d{0,2})/; +$input =~ /^$digs$digs$digs$digs$(?{print "$1.$2.$3.$4\n" if all {$_ < 256} ($1, $2, $3, $4)})(?!)/; diff --git a/challenge-061/sangeet-kar/raku/ch-1.raku b/challenge-061/sangeet-kar/raku/ch-1.raku new file mode 100755 index 0000000000..141716809c --- /dev/null +++ b/challenge-061/sangeet-kar/raku/ch-1.raku @@ -0,0 +1,11 @@ +#!/usr/bin/env raku + +sub sublists ($lst) { + ($lst, *.tail(*-1) …^:!elems).map: {|[\,] $_} +} + +sub maximise-product ($lst) { + sublists($lst).max: *.reduce(* × *) +} + +say maximise-product(<2 5 -1 3>).join(", "); diff --git a/challenge-061/sangeet-kar/raku/ch-2.raku b/challenge-061/sangeet-kar/raku/ch-2.raku new file mode 100755 index 0000000000..810d710cb6 --- /dev/null +++ b/challenge-061/sangeet-kar/raku/ch-2.raku @@ -0,0 +1,6 @@ +#!/usr/bin/env raku + +sub MAIN (Str $input="25525511135") { + my $digs = rx/ 0 || <-[0]> \d ** 0..2 <?{ $/.Int ≤ 255 }> /; + say $_[0].join('.') for $input ~~ m:ex/^ (<$digs>) ** 4 $/; +} |
