aboutsummaryrefslogtreecommitdiff
path: root/challenge-087
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-11-23 00:40:30 +0000
committerGitHub <noreply@github.com>2020-11-23 00:40:30 +0000
commit239af51177df0c747b3d5be7bd16a55803e894ed (patch)
tree7156e9d33e6ed0eb8ec1cfaebffe155c6d4e8b7e /challenge-087
parenta09c9b601f7e359d1a9b3f28f1efa6c7e4018f39 (diff)
parentf639ae0a1680d171555054585729e8d46eaf4eee (diff)
downloadperlweeklychallenge-club-239af51177df0c747b3d5be7bd16a55803e894ed.tar.gz
perlweeklychallenge-club-239af51177df0c747b3d5be7bd16a55803e894ed.tar.bz2
perlweeklychallenge-club-239af51177df0c747b3d5be7bd16a55803e894ed.zip
Merge pull request #2823 from jaldhar/challenge-087
Challenge 87 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-087')
-rw-r--r--challenge-087/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-087/jaldhar-h-vyas/perl/ch-1.pl23
-rwxr-xr-xchallenge-087/jaldhar-h-vyas/perl/ch-2.pl73
-rwxr-xr-xchallenge-087/jaldhar-h-vyas/raku/ch-1.p622
-rwxr-xr-xchallenge-087/jaldhar-h-vyas/raku/ch-2.p648
-rw-r--r--challenge-087/jaldhar-h-vyas/square1.txt5
-rw-r--r--challenge-087/jaldhar-h-vyas/square2.txt4
-rw-r--r--challenge-087/jaldhar-h-vyas/square3.txt5
8 files changed, 181 insertions, 0 deletions
diff --git a/challenge-087/jaldhar-h-vyas/blog.txt b/challenge-087/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..b70bd70761
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/11/perl_weekly_challenge_week_87.html
diff --git a/challenge-087/jaldhar-h-vyas/perl/ch-1.pl b/challenge-087/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..ec49f67a1e
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+my @N = sort { $a <=> $b } @ARGV;
+
+my @sequence = ( $N[0] );
+my @longest;
+
+for my $i (1 .. scalar @N - 1) {
+ if ($N[$i] == $N[$i - 1] + 1) {
+ push @sequence, $N[$i];
+
+ if (scalar @sequence > scalar @longest) {
+ @longest = @sequence;
+ }
+
+ } else {
+ @sequence = ( $N[$i] );
+ }
+}
+
+say scalar @longest ? (q{(} . (join q{, }, @longest) . q{)}) : 0;
diff --git a/challenge-087/jaldhar-h-vyas/perl/ch-2.pl b/challenge-087/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..d3f22e8dbb
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <file>
+
+ <file> a file describing a matrix of 1's and 0's where every line is a row in the matrix.
+-USAGE-
+ exit 0;
+}
+
+sub all {
+ my @array = @_;
+
+ for (@array) {
+ if ($_ != 1) {
+ return undef;
+ }
+ }
+
+ return 1;
+}
+
+my $file = shift // usage();
+
+my @matrix;
+open my $fn, '<', $file or die "$OS_ERROR\n";
+while (my $line = <$fn>) {
+ chomp $line;
+ push @matrix, [ $line =~ /(0|1)/g ];
+}
+close $fn;
+
+my $maxheight = 0;
+my $maxwidth = 0;
+
+for my $m (0 .. scalar @matrix - 1) {
+ for my $n (0 .. scalar @{$matrix[$m]} - 1) {
+ if (@{$matrix[$m]}[$n] == 1) {
+ my $row = $m;
+ my $col = $n;
+ my $left = $n;
+ my $height = 0;
+ my $width = 0;
+ while ($col < scalar @{$matrix[$row]} && @{$matrix[$row]}[$col] == 1) {
+ $width++;
+ $col++;
+ }
+
+ while ($row < scalar @matrix && all(@{$matrix[$row]}[$left .. $left + $width - 1])) {
+ $height++;
+ $row++;
+ }
+
+ if ($height * $width > $maxheight * $maxwidth) {
+ $maxheight = $height;
+ $maxwidth = $width;
+ }
+ }
+ }
+}
+
+if ($maxheight * $maxwidth < 2) {
+ say '0';
+} else {
+ for (0 .. $maxheight - 1) {
+ say q{[ }, "1 " x $maxwidth, q{]};
+ }
+} \ No newline at end of file
diff --git a/challenge-087/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-087/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..14b0c0245b
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,22 @@
+#!/usr/bin/perl6
+
+sub MAIN(*@N) {
+ my @n = @N.sort;
+ my @sequence = ( @n[0] );
+ my @longest;
+
+ for 1 ..^ @n.elems -> $i {
+ if @n[$i] == @n[$i - 1] + 1 {
+ @sequence.push(@n[$i]);
+
+ if @sequence.elems > @longest.elems {
+ @longest = @sequence;
+ }
+
+ } else {
+ @sequence = ( @n[$i] );
+ }
+ }
+
+ say @longest.elems ?? (q{(} ~ @longest.join(q{, }) ~ q{)}) !! 0;
+} \ No newline at end of file
diff --git a/challenge-087/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-087/jaldhar-h-vyas/raku/ch-2.p6
new file mode 100755
index 0000000000..37796b0485
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/raku/ch-2.p6
@@ -0,0 +1,48 @@
+#!/usr/bin/perl6
+
+sub MAIN(
+ Str $file #= a file describing a matrix of 1's and 0's where every line
+ #= is a row in the matrix.
+) {
+ my @matrix;
+ for $file.IO.lines -> $line {
+ @matrix.push($line.match(/ (0|1) /, :g));
+ }
+
+ my $maxheight = 0;
+ my $maxwidth = 0;
+
+ for 0 ..^ @matrix.elems -> $m {
+ for 0 ..^ @matrix[$m].elems -> $n {
+ if @matrix[$m][$n] == 1 {
+ my $row = $m;
+ my $col = $n;
+ my $left = $n;
+ my $height = 0;
+ my $width = 0;
+ while $col < @matrix[$row].elems && @matrix[$row][$col] == 1 {
+ $width++;
+ $col++;
+ }
+
+ while $row < @matrix.elems && @matrix[$row][$left ..^ $left + $width].all == 1 {
+ $height++;
+ $row++;
+ }
+
+ if $height * $width > $maxheight * $maxwidth {
+ $maxheight = $height;
+ $maxwidth = $width;
+ }
+ }
+ }
+ }
+
+ if $maxheight * $maxwidth < 2 {
+ say '0';
+ } else {
+ for 0 ..^ $maxheight {
+ say q{[ }, "1 " x $maxwidth, q{]};
+ }
+ }
+} \ No newline at end of file
diff --git a/challenge-087/jaldhar-h-vyas/square1.txt b/challenge-087/jaldhar-h-vyas/square1.txt
new file mode 100644
index 0000000000..14c0fc6cf9
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/square1.txt
@@ -0,0 +1,5 @@
+[ 0 0 0 1 0 0 ]
+[ 1 1 1 0 0 0 ]
+[ 0 0 1 0 0 1 ]
+[ 1 1 1 1 1 0 ]
+[ 1 1 1 1 1 0 ]
diff --git a/challenge-087/jaldhar-h-vyas/square2.txt b/challenge-087/jaldhar-h-vyas/square2.txt
new file mode 100644
index 0000000000..c7014c10a0
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/square2.txt
@@ -0,0 +1,4 @@
+[ 1 0 1 0 1 0 ]
+[ 0 1 0 1 0 1 ]
+[ 1 0 1 0 1 0 ]
+[ 0 1 0 1 0 1 ] \ No newline at end of file
diff --git a/challenge-087/jaldhar-h-vyas/square3.txt b/challenge-087/jaldhar-h-vyas/square3.txt
new file mode 100644
index 0000000000..717ddaf3b4
--- /dev/null
+++ b/challenge-087/jaldhar-h-vyas/square3.txt
@@ -0,0 +1,5 @@
+[ 0 0 0 1 1 1 ]
+[ 1 1 1 1 1 1 ]
+[ 0 0 1 0 0 1 ]
+[ 0 0 1 1 1 1 ]
+[ 0 0 1 1 1 1 ] \ No newline at end of file