exercism-perl5

Repository for my Perl 5 Exercism exercises
git clone git://git.samirparikh.com/exercism-perl5
Log | Files | Refs | README

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;