diff options
| -rwxr-xr-x | challenge-088/perlboy1967/perl/ch-1.pl | 32 | ||||
| -rwxr-xr-x | challenge-088/perlboy1967/perl/ch-2.pl | 81 |
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; +} |
