aboutsummaryrefslogtreecommitdiff
path: root/challenge-084
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2020-11-01 16:57:14 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2020-11-01 16:57:14 -0500
commitf2244a5614534266b2868ca76b2dc2ebbd7affe3 (patch)
tree36d733fe129c523b7730f450da3ddc7a0bab080a /challenge-084
parentc5c9b929fec939b0cc52b1dde34eae86df8c7f1a (diff)
downloadperlweeklychallenge-club-f2244a5614534266b2868ca76b2dc2ebbd7affe3.tar.gz
perlweeklychallenge-club-f2244a5614534266b2868ca76b2dc2ebbd7affe3.tar.bz2
perlweeklychallenge-club-f2244a5614534266b2868ca76b2dc2ebbd7affe3.zip
Challenge 84 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-084')
-rw-r--r--challenge-084/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-084/jaldhar-h-vyas/perl/ch-1.pl24
-rwxr-xr-xchallenge-084/jaldhar-h-vyas/perl/ch-2.pl43
-rwxr-xr-xchallenge-084/jaldhar-h-vyas/raku/ch-1.p624
-rwxr-xr-xchallenge-084/jaldhar-h-vyas/raku/ch-2.p630
-rw-r--r--challenge-084/jaldhar-h-vyas/square1.txt4
-rw-r--r--challenge-084/jaldhar-h-vyas/square2.txt4
-rw-r--r--challenge-084/jaldhar-h-vyas/square3.txt4
8 files changed, 134 insertions, 0 deletions
diff --git a/challenge-084/jaldhar-h-vyas/blog.txt b/challenge-084/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..b1649bb87f
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/11/perl_weekly_challenge_week_84.html
diff --git a/challenge-084/jaldhar-h-vyas/perl/ch-1.pl b/challenge-084/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..c85b75b1f7
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+my $num = shift;
+my $sign = 0;
+
+if ($num < 0) {
+ $sign = 1;
+ $num = abs($num);
+}
+
+if ($num > 2_147_483_647) {
+ say '0';
+} else {
+ my $reversed = 0;
+
+ while ($num > 0) {
+ $reversed = $reversed * 10 + $num % 10;
+ $num = int ($num / 10);
+ }
+
+ say $sign ? q{-} : q{}, $reversed;
+} \ No newline at end of file
diff --git a/challenge-084/jaldhar-h-vyas/perl/ch-2.pl b/challenge-084/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..a623c89d47
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,43 @@
+#!/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;
+}
+
+my $file = shift // usage();
+
+my @matrix;
+open my $fn, '<', $file or die "$OS_ERROR\n";
+while (my $line = <$fn>) {
+ chomp $line;
+ push @matrix, [ split //, $line ];
+}
+close $fn;
+
+my $squares = 0;
+
+for my $m (0 .. scalar @matrix - 1) {
+ for my $n (0 .. (scalar @{$matrix[$m]} - 1)) {
+ if ($matrix[$m]->[$n] == 1) {
+ for (my $side = 1; $n + $side < scalar @{$matrix[$m]}; $side++) {
+ if ($matrix[$m]->[$n + $side] == 1
+ && $m + $side < scalar @matrix
+ && $matrix[$m + $side]->[$n] == 1
+ && $matrix[$m + $side]->[$n + $side] == 1) {
+ $squares++;
+ }
+ }
+ }
+ }
+}
+
+say $squares;
diff --git a/challenge-084/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-084/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..baf9386c40
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,24 @@
+#!/usr/bin/perl6
+
+sub MAIN(Int $n) {
+ my $num = $n;
+ my $sign = 0;
+
+ if ($num < 0) {
+ $sign = 1;
+ $num = abs($num);
+ }
+
+ if $num > 2_147_483_647 {
+ say '0';
+ } else {
+ my $reversed = 0;
+
+ while $num > 0 {
+ $reversed = $reversed * 10 + $num % 10;
+ $num div= 10;
+ }
+
+ say $sign ?? q{-} !! q{}, $reversed;
+ }
+} \ No newline at end of file
diff --git a/challenge-084/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-084/jaldhar-h-vyas/raku/ch-2.p6
new file mode 100755
index 0000000000..741dab6c75
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/raku/ch-2.p6
@@ -0,0 +1,30 @@
+#!/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.comb);
+ }
+
+ my $squares = 0;
+
+ for 0 ..^ @matrix.elems -> $m {
+ for 0 ..^ @matrix[$m].elems -> $n {
+ if @matrix[$m][$n] == 1 {
+ loop (my $side = 1; $n + $side < @matrix[$m].elems; $side++) {
+ if @matrix[$m][$n + $side] == 1
+ && $m + $side < @matrix.elems
+ && @matrix[$m + $side][$n] == 1
+ && @matrix[$m + $side][$n + $side] == 1 {
+ $squares++;
+ }
+ }
+ }
+ }
+ }
+
+ say $squares;
+} \ No newline at end of file
diff --git a/challenge-084/jaldhar-h-vyas/square1.txt b/challenge-084/jaldhar-h-vyas/square1.txt
new file mode 100644
index 0000000000..4bb4d6654a
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/square1.txt
@@ -0,0 +1,4 @@
+0101
+0010
+1101
+1001
diff --git a/challenge-084/jaldhar-h-vyas/square2.txt b/challenge-084/jaldhar-h-vyas/square2.txt
new file mode 100644
index 0000000000..44adffecc1
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/square2.txt
@@ -0,0 +1,4 @@
+1101
+1100
+0111
+1011
diff --git a/challenge-084/jaldhar-h-vyas/square3.txt b/challenge-084/jaldhar-h-vyas/square3.txt
new file mode 100644
index 0000000000..078c8a9b8b
--- /dev/null
+++ b/challenge-084/jaldhar-h-vyas/square3.txt
@@ -0,0 +1,4 @@
+0101
+1010
+0100
+1001