commit db7a0fc31bc421b402bcc3eb622a85b8a114c48e parent 92f5a893bac520226d181a32cffe5210ec2003ef Author: Samir Parikh <noreply@samirparikh.com> Date: Sun, 27 Feb 2022 18:25:24 +0000 get all tests to pass for Pascal's triangle Diffstat:
M | pascals-triangle/PascalsTriangle.pm | | | 17 | ++++++++++++++++- |
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/pascals-triangle/PascalsTriangle.pm b/pascals-triangle/PascalsTriangle.pm @@ -6,7 +6,22 @@ our @EXPORT_OK = qw<pascal_rows>; sub pascal_rows { my ($rows) = @_; - return undef; + my $output = ''; + my @triangle = (); + return $output unless $rows; + return '1' if ( $rows == 1 ); + push @triangle => [ 1 ]; + foreach my $r ( 2 .. $rows) { + my @row = (); + foreach my $element ( 1 .. $r ) { + my $p1 = $element == 1 ? 0 : $triangle[$r-2][$element-2]; + my $p2 = $element == $r ? 0 : $triangle[$r-2][$element-1]; + push @row => $p1 + $p2; + } + push @triangle => \@row; + } + $output = join( "\n", map { join ' ', @$_ } @triangle ); + return $output; } 1;