aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-05-21 17:07:46 +0100
committerGitHub <noreply@github.com>2020-05-21 17:07:46 +0100
commitdbab85fcb904f3f790cb81771324a24862195c64 (patch)
treeff29e57f054bf078745c48854ebab1a84226c274
parente37427228472a056de8ad934b46d1abd1388e24f (diff)
parenta5b0ef9bdabeebfaaab969bd935f5a49e019da78 (diff)
downloadperlweeklychallenge-club-dbab85fcb904f3f790cb81771324a24862195c64.tar.gz
perlweeklychallenge-club-dbab85fcb904f3f790cb81771324a24862195c64.tar.bz2
perlweeklychallenge-club-dbab85fcb904f3f790cb81771324a24862195c64.zip
Merge pull request #1742 from sangeetkar/ch61
Ch61
-rwxr-xr-xchallenge-061/sangeet-kar/perl/ch-1.pl27
-rwxr-xr-xchallenge-061/sangeet-kar/perl/ch-2.pl11
-rwxr-xr-xchallenge-061/sangeet-kar/raku/ch-1.raku11
-rwxr-xr-xchallenge-061/sangeet-kar/raku/ch-2.raku6
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 $/;
+}