aboutsummaryrefslogtreecommitdiff
path: root/challenge-033
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-11-07 11:53:58 +0000
committerGitHub <noreply@github.com>2019-11-07 11:53:58 +0000
commit63e753c68d9644c8c619a92d91f903e06f67c56e (patch)
treef3214d93ab57268c9af717f223ee789c43d611c1 /challenge-033
parent4b0d246b08356b7a970233709adf20146f63c27e (diff)
parentedfff5900f1171806851b3ed6dcbbac721a2bda2 (diff)
downloadperlweeklychallenge-club-63e753c68d9644c8c619a92d91f903e06f67c56e.tar.gz
perlweeklychallenge-club-63e753c68d9644c8c619a92d91f903e06f67c56e.tar.bz2
perlweeklychallenge-club-63e753c68d9644c8c619a92d91f903e06f67c56e.zip
Merge pull request #902 from ndelucca/challenge-033/ndelucca
challenge-033/ndelucca
Diffstat (limited to 'challenge-033')
-rw-r--r--challenge-033/ndelucca/perl5/ch-2-recursive.pl71
1 files changed, 71 insertions, 0 deletions
diff --git a/challenge-033/ndelucca/perl5/ch-2-recursive.pl b/challenge-033/ndelucca/perl5/ch-2-recursive.pl
new file mode 100644
index 0000000000..1c681b191d
--- /dev/null
+++ b/challenge-033/ndelucca/perl5/ch-2-recursive.pl
@@ -0,0 +1,71 @@
+use strict;
+use warnings;
+
+die "Choose a matrix size" unless @ARGV;
+
+my $size = shift @ARGV;
+
+render_matrix($size);
+
+sub render_matrix{
+
+ my $max = $size;
+ my $min = 1;
+ my $w = 1 + length $max**2;
+
+ my $matrix = [];
+ matrix_generator($min,$max,$matrix);
+ $matrix->[0]->[0] = "x";
+
+ print row($w,$matrix->[0]->[0],"|", map { $matrix->[0]->[$_] } ($min..$max));
+ print row($w,"-"x$w,"-"x($w-1)."+", map { "-"x$w } ($min..$max));
+
+ for my $row ($min..$max){
+ print row($w,$matrix->[$row]->[0],"|", map { $matrix->[$row]->[$_] || "" } ($min..$max));
+ }
+}
+
+sub matrix_generator{
+
+ my ($row_c,$max,$matrix) = @_;
+
+ return if $row_c > $max;
+
+ $matrix->[$row_c]->[0] = $row_c;
+
+ row_generator($row_c,$row_c,$max,$matrix);
+
+ $row_c++;
+
+ matrix_generator($row_c,$max,$matrix);
+
+}
+
+sub row_generator{
+
+ my ($row_c,$col_c,$max,$matrix) = @_;
+
+ return if $col_c > $max;
+
+ $matrix->[0]->[$col_c] = $col_c;
+
+ $matrix->[$row_c]->[$col_c] = $col_c*$row_c;
+
+ $col_c++;
+
+ row_generator($row_c,$col_c,$max,$matrix);
+
+}
+
+sub cell{
+ my $width = shift;
+ return sprintf "%".$width."s",shift;
+}
+
+sub row{
+ my $width = shift;
+ my @row = ();
+ push @row, cell($width,$_) foreach (@_);
+ push @row, "\n";
+ return @row;
+}