diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-10-26 12:40:28 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-26 12:40:28 +0000 |
| commit | 033ac1ebc166e50da4ed6b7dbd5a7cab67308f5a (patch) | |
| tree | 1089a38f991effecb7f3f6ee12d5c5cb8a9112c7 | |
| parent | 36689119b61dc0db7b5094768b0447ddeb748dcf (diff) | |
| parent | cc614763dd8fc8d53c4dd3f73f32fd6ace65704a (diff) | |
| download | perlweeklychallenge-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.pl | 23 | ||||
| -rw-r--r-- | challenge-084/dave-cross/perl/ch-2.pl | 47 | ||||
| -rw-r--r-- | challenge-084/dave-cross/perl/ex1 | 4 | ||||
| -rw-r--r-- | challenge-084/dave-cross/perl/ex2 | 4 | ||||
| -rw-r--r-- | challenge-084/dave-cross/perl/ex3 | 4 | ||||
| -rw-r--r-- | challenge-084/dave-cross/perl/wrong | 1 |
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 |
