diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-11-07 11:53:58 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-11-07 11:53:58 +0000 |
| commit | 63e753c68d9644c8c619a92d91f903e06f67c56e (patch) | |
| tree | f3214d93ab57268c9af717f223ee789c43d611c1 /challenge-033 | |
| parent | 4b0d246b08356b7a970233709adf20146f63c27e (diff) | |
| parent | edfff5900f1171806851b3ed6dcbbac721a2bda2 (diff) | |
| download | perlweeklychallenge-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.pl | 71 |
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; +} |
