PascalsTriangle.pm (669B) - raw
1 package PascalsTriangle; 2 use strict; 3 use warnings; 4 use Exporter qw<import>; 5 our @EXPORT_OK = qw<pascal_rows>; 6 7 sub pascal_rows { 8 my ($rows) = @_; 9 my $output = ''; 10 my @triangle = (); 11 return $output unless $rows; 12 return '1' if ( $rows == 1 ); 13 push @triangle => [ 1 ]; 14 foreach my $r ( 2 .. $rows) { 15 my @row = (); 16 foreach my $element ( 1 .. $r ) { 17 my $p1 = $element == 1 ? 0 : $triangle[$r-2][$element-2]; 18 my $p2 = $element == $r ? 0 : $triangle[$r-2][$element-1]; 19 push @row => $p1 + $p2; 20 } 21 push @triangle => \@row; 22 } 23 $output = join( "\n", map { join ' ', @$_ } @triangle ); 24 return $output; 25 } 26 27 1;