AoA with a less ugly call
#!/usr/bin/perl # http://perlmonks.org/?node_id=1211497 use strict; use warnings; use Data::Dump 'pp'; sub up { my ($row, $col) = $_[0]->@*; return $row == 0 && $col == 0 ? [ map [ @$_ ], @_ ] : (($row > 0 && $col > 0 ? up( [ ~-$row, ~-$col ], @_ ) : () ), ($row > $col ? up( [ ~-$row, $col ], @_ ) : () ) ); } pp up [ 3, 1 ];
Outputs:
( [[0, 0], [1, 0], [2, 0], [3, 1]], [[0, 0], [1, 0], [2, 1], [3, 1]], [[0, 0], [1, 1], [2, 1], [3, 1]], )
And yes, the row and col checks are to stay within the triangle.
BTW, contrary to some opinions, this code is NOT golfed. If it were, it wouldn't be using
three letter variable names, and certainly wouldn't have used a totally unnecessary 'return' statement. :)
In reply to Re^3: compute paths in Pascal's triangle (aka Tartaglia's one) -- the winner is..
by tybalt89
in thread compute paths in Pascal's triangle (aka Tartaglia's one)
by Discipulus
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |