aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-088/perlboy1967/perl/ch-1.pl32
-rwxr-xr-xchallenge-088/perlboy1967/perl/ch-2.pl81
2 files changed, 113 insertions, 0 deletions
diff --git a/challenge-088/perlboy1967/perl/ch-1.pl b/challenge-088/perlboy1967/perl/ch-1.pl
new file mode 100755
index 0000000000..c074ad77b8
--- /dev/null
+++ b/challenge-088/perlboy1967/perl/ch-1.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+# Perl Weekly Challenge - 088
+# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-088/
+#
+# Task 1 - Array of Product
+#
+# Author: Niels 'PerlBoy' van Dijke
+
+use strict;
+use warnings;
+
+use Data::Printer;
+
+# Unbuffered STDOUT
+$|++;
+
+@ARGV = (5, 2, 1, 4, 3)
+ unless scalar(@ARGV);
+
+die "Please provide minimally three positive integer numbers"
+ unless (scalar @ARGV > 2 and
+ scalar grep { /^[1-9][0-9]*$/} @ARGV == scalar @ARGV);
+
+my @N = @ARGV;
+
+my $product = 1;
+map { $product *= $_ } @N;
+
+my @M = map { $product / $_ } @N;
+
+p @M;
diff --git a/challenge-088/perlboy1967/perl/ch-2.pl b/challenge-088/perlboy1967/perl/ch-2.pl
new file mode 100755
index 0000000000..309500f4ca
--- /dev/null
+++ b/challenge-088/perlboy1967/perl/ch-2.pl
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+
+# Perl Weekly Challenge - 088
+# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-088/
+#
+# Task 2 - Spiral Matrix
+#
+# Author: Niels 'PerlBoy' van Dijke
+
+use strict;
+use warnings;
+
+use Data::Printer;
+
+sub matrix($);
+
+# Unbuffered STDOUT
+$|++;
+
+my $ar = [
+ [qw(1 2)],
+ [qw(3 4)],
+];
+
+my $ar1 = [
+ [qw(1 2 3)],
+ [qw(4 5 6)],
+ [qw(7 8 9)],
+];
+
+my $ar2 = [
+ [qw( 1 2 3 4)],
+ [qw( 5 6 7 8)],
+ [qw( 9 10 11 12)],
+ [qw(13 14 15 16)],
+];
+
+my $hrM = matrix($ar2);
+
+my @O;
+
+my @dirVector = (
+ [ 0, 1],
+ [ 1, 0],
+ [ 0,-1],
+ [-1, 0]
+);
+
+my ($r, $c) = (0, 0);
+
+LOOP:
+while (1) {
+ push(@O, delete($hrM->{$r}{$c}));
+
+ my $rot = 0;
+ while (!exists($hrM->{$r+$dirVector[0][0]}{$c+$dirVector[0][1]})) {
+ push(@dirVector, shift(@dirVector));
+ $rot++;
+ last LOOP if ($rot > 1);
+ }
+
+ $r += $dirVector[0][0];
+ $c += $dirVector[0][1];
+}
+
+p @O;
+
+sub matrix($) {
+ my ($ar) = @_;
+
+ my $m;
+
+ my $r = 0;
+ foreach my $row (@$ar) {
+ my $c = 0;
+ map { $m->{$r}{$c++} = $_ } @$row;
+ $r++;
+ }
+
+ return $m;
+}