in reply to compute paths in Pascal's triangle (aka Tartaglia's one)

#!/usr/bin/perl # http://perlmonks.org/?node_id=1211497 use strict; use warnings; sub up { my ($x, $y) = split /-/, $_[0]; $x && $y and up( $x - 1 . '-' . ($y - 1), @_ ); $x and up( $x - 1 . "-$y", @_ ); $x || $y or print "@_\n"; } up( '3-1' );

Replies are listed 'Best First'.
Re^2: compute paths in Pascal's triangle (aka Tartaglia's one)
by LanX (Saint) on Mar 22, 2018 at 16:29 UTC

      Here's the functional version Re: compute paths in Pascal's triangle (aka Tartaglia's one) modified to allow a top other than 0-0.

      #!/usr/bin/perl # http://perlmonks.org/?node_id=1211497 use strict; use warnings; sub up { my ($row, $col) = split /-/, $_[0]; my ($startrow, $startcol) = split /-/, $_[-1]; return $_[0] eq $_[-1] ? "@_[0..@_-2]\n" : ($row - $startrow > 0 && $col - $startcol > 0 && up( ~-$row . '-' . ~-$col, @_ ) ) . ($row - $startrow > $col - $startcol && up( ~-$row . '-' . $col, @_ ) ); } print up( '3-1', '1-0' ); # bottom, top
        I think you could just have sticked with your first program, and solve it by a coordinate transformation.

        3-1 to 1-0 is essentially the same like 2-1 to 0-0

        0-0 1-0 1-1 2-0 2-1 2-2 3-0 3-1 3-2 3-3 4-0 4-1 4-2 4-3 4-4 5-0 5-1 5-2 5-3 5-4 5-5

        Though you would have ended with more readable code ... nah forget it! ;-)

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)
        Wikisyntax for the Monastery

      That would be an entirely different problem altogether </Airplane joke>