aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsangeet <sangeet.kar@gmail.com>2020-05-21 11:00:29 +0000
committersangeet <sangeet.kar@gmail.com>2020-05-21 11:00:29 +0000
commita5b0ef9bdabeebfaaab969bd935f5a49e019da78 (patch)
tree36ca5ea88fb584885c65a33a29dca73d83d28575
parentcee0e91285411cec4a22a5df4b9c6a4bcf0e4068 (diff)
downloadperlweeklychallenge-club-a5b0ef9bdabeebfaaab969bd935f5a49e019da78.tar.gz
perlweeklychallenge-club-a5b0ef9bdabeebfaaab969bd935f5a49e019da78.tar.bz2
perlweeklychallenge-club-a5b0ef9bdabeebfaaab969bd935f5a49e019da78.zip
updated solutions to Ch61
-rwxr-xr-xchallenge-061/sangeet-kar/perl/ch-1.pl27
-rwxr-xr-xchallenge-061/sangeet-kar/perl/ch-2.pl7
-rwxr-xr-xchallenge-061/sangeet-kar/raku/ch-1.raku2
-rwxr-xr-xchallenge-061/sangeet-kar/raku/ch-2.raku6
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 $/;
}