aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-10-26 12:40:28 +0000
committerGitHub <noreply@github.com>2020-10-26 12:40:28 +0000
commit033ac1ebc166e50da4ed6b7dbd5a7cab67308f5a (patch)
tree1089a38f991effecb7f3f6ee12d5c5cb8a9112c7
parent36689119b61dc0db7b5094768b0447ddeb748dcf (diff)
parentcc614763dd8fc8d53c4dd3f73f32fd6ace65704a (diff)
downloadperlweeklychallenge-club-033ac1ebc166e50da4ed6b7dbd5a7cab67308f5a.tar.gz
perlweeklychallenge-club-033ac1ebc166e50da4ed6b7dbd5a7cab67308f5a.tar.bz2
perlweeklychallenge-club-033ac1ebc166e50da4ed6b7dbd5a7cab67308f5a.zip
Merge pull request #2632 from davorg/master
Challenge #84
-rw-r--r--challenge-084/dave-cross/perl/ch-1.pl23
-rw-r--r--challenge-084/dave-cross/perl/ch-2.pl47
-rw-r--r--challenge-084/dave-cross/perl/ex14
-rw-r--r--challenge-084/dave-cross/perl/ex24
-rw-r--r--challenge-084/dave-cross/perl/ex34
-rw-r--r--challenge-084/dave-cross/perl/wrong1
6 files changed, 83 insertions, 0 deletions
diff --git a/challenge-084/dave-cross/perl/ch-1.pl b/challenge-084/dave-cross/perl/ch-1.pl
new file mode 100644
index 0000000000..9366fd0279
--- /dev/null
+++ b/challenge-084/dave-cross/perl/ch-1.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+my @in = grep { /^-?\d+$/ } @ARGV;
+die "Give me an integer\n" unless @in;
+
+my $max = int( 0xffffffff / 2 );
+
+my $n = shift @in;
+
+if ($n > $max) {
+ say 0;
+ exit;
+}
+
+if ($n < 0) {
+ say -1 * reverse abs $n;
+} else {
+ say scalar reverse $n;
+}
diff --git a/challenge-084/dave-cross/perl/ch-2.pl b/challenge-084/dave-cross/perl/ch-2.pl
new file mode 100644
index 0000000000..781d85c377
--- /dev/null
+++ b/challenge-084/dave-cross/perl/ch-2.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature qw[signatures say];
+no warnings 'experimental::signatures';
+
+use List::Util 'min';
+
+my $matrix = get_matrix();
+
+say count_squares($matrix);
+
+sub count_squares($matrix) {
+ my $count = 0;
+ my $size = @$matrix;
+
+ for my $r (0 .. $size - 1) {
+ for my $c (0 .. $size - 1) {
+ for my $edge (1 .. min($size - $r, $size - $c)) {
+ $count++ if good_square($matrix, $r, $c, $edge);
+ }
+ }
+ }
+
+ return $count;
+}
+
+sub good_square($matrix, $r, $c, $edge) {
+ return if ! $matrix->[$r ][$c];
+ return if ! $matrix->[$r + $edge][$c];
+ return if ! $matrix->[$r + $edge][$c + $edge];
+ return if ! $matrix->[$r ][$c + $edge];
+ return 1;
+}
+
+sub get_matrix() {
+ while (<>) {
+ chomp;
+ push @$matrix, [ grep { /^0|1$/ } split ];
+ }
+
+ my $size = @$matrix;
+ die "Not a square matrix\n" if grep { @$_ ne $size } @$matrix;
+
+ return $matrix;
+}
diff --git a/challenge-084/dave-cross/perl/ex1 b/challenge-084/dave-cross/perl/ex1
new file mode 100644
index 0000000000..bacb76dd3e
--- /dev/null
+++ b/challenge-084/dave-cross/perl/ex1
@@ -0,0 +1,4 @@
+0 1 0 1
+0 0 1 0
+1 1 0 1
+1 0 0 1
diff --git a/challenge-084/dave-cross/perl/ex2 b/challenge-084/dave-cross/perl/ex2
new file mode 100644
index 0000000000..cf8184f4f1
--- /dev/null
+++ b/challenge-084/dave-cross/perl/ex2
@@ -0,0 +1,4 @@
+1 1 0 1
+1 1 0 0
+0 1 1 1
+1 0 1 1
diff --git a/challenge-084/dave-cross/perl/ex3 b/challenge-084/dave-cross/perl/ex3
new file mode 100644
index 0000000000..a6646c4f8a
--- /dev/null
+++ b/challenge-084/dave-cross/perl/ex3
@@ -0,0 +1,4 @@
+0 1 0 1
+1 0 1 0
+0 1 0 0
+1 0 0 1
diff --git a/challenge-084/dave-cross/perl/wrong b/challenge-084/dave-cross/perl/wrong
new file mode 100644
index 0000000000..3aacd417fc
--- /dev/null
+++ b/challenge-084/dave-cross/perl/wrong
@@ -0,0 +1 @@
+2 3 4