diff options
| -rwxr-xr-x | challenge-061/sangeet-kar/perl/ch-1.pl | 27 | ||||
| -rwxr-xr-x | challenge-061/sangeet-kar/perl/ch-2.pl | 7 | ||||
| -rwxr-xr-x | challenge-061/sangeet-kar/raku/ch-1.raku | 2 | ||||
| -rwxr-xr-x | challenge-061/sangeet-kar/raku/ch-2.raku | 6 |
4 files changed, 34 insertions, 8 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 index e6d666170c..bb9c0faaad 100755 --- a/challenge-061/sangeet-kar/perl/ch-2.pl +++ b/challenge-061/sangeet-kar/perl/ch-2.pl @@ -1,10 +1,11 @@ #!/usr/bin/env perl -use 5.30.0; +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$(?{say "$1.$2.$3.$4" if all {$_ < 256} ($1, $2, $3, $4)})(?!)/; +$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 index ed276cec7e..141716809c 100755 --- a/challenge-061/sangeet-kar/raku/ch-1.raku +++ b/challenge-061/sangeet-kar/raku/ch-1.raku @@ -8,4 +8,4 @@ sub maximise-product ($lst) { sublists($lst).max: *.reduce(* × *) } -say maximise-product <2 5 -1 3>; +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 index 34cc4423a2..810d710cb6 100755 --- a/challenge-061/sangeet-kar/raku/ch-2.raku +++ b/challenge-061/sangeet-kar/raku/ch-2.raku @@ -1,8 +1,6 @@ #!/usr/bin/env raku -sub MAIN (Str $input) { +sub MAIN (Str $input="25525511135") { my $digs = rx/ 0 || <-[0]> \d ** 0..2 <?{ $/.Int ≤ 255 }> /; - for $input ~~ m:ex/^ (<$digs>) ** 4 $/ -> $match { - say ~@$match.list».join('.'); - } + say $_[0].join('.') for $input ~~ m:ex/^ (<$digs>) ** 4 $/; } |
