The main trick is to double the number of columns plus one and to fill the void symmetrically...
This was the output of the original version:use strict; sub pascalMatrix { my $tabularRows = ""; my @row = (1); my $cols = ($_[0] * 2) + 1; #add: final number of columns my $filler = "{ }"; #add: used to mark an empty entry for (my $r = 0; $r <= $_[0]; $r++) { # Output the current row ### begin of modification # insert a filler between each item (sprintf is for LaTeX cosmeti +cs) my @fmt = map { (sprintf("%3d",$_), $filler) } @row; pop @fmt; # pre-/append a filler until final number of columns reached unshift(@fmt,$filler), push(@fmt,$filler) while (@fmt < $cols); $tabularRows .= join (" & ", @fmt) ." \\\\\n"; ### end of modification # Generate the next row my @nextRow = (1); for (my $c = 1; $c <= $r; $c++) { push @nextRow, @row[$c - 1] + @row[$c]; } push @nextRow, 1; @row = @nextRow; } return "\\begin{tabular}{*{$cols}{c}c}\n" . # changed! $tabularRows . "\\end{tabular}\n"; } print pascalMatrix(10);
This is the output of the patched version:\begin{tabular}{*{5}{c}c} 1 \\ 1&1 \\ 1&2&1 \\ 1&3&3&1 \\ 1&4&6&4&1 \\ 1&5&10&10&5&1 \\ \end{tabular}
My LaTeX installation is gone, but there's a nice LaTeX Online-Compiler available.\begin{tabular}{*{11}{c}c} { } & { } & { } & { } & { } & 1 & { } & { } & { } & { } & { } \\ { } & { } & { } & { } & 1 & { } & 1 & { } & { } & { } & { } \\ { } & { } & { } & 1 & { } & 2 & { } & 1 & { } & { } & { } \\ { } & { } & 1 & { } & 3 & { } & 3 & { } & 1 & { } & { } \\ { } & 1 & { } & 4 & { } & 6 & { } & 4 & { } & 1 & { } \\ 1 & { } & 5 & { } & 10 & { } & 10 & { } & 5 & { } & 1 \\ \end{tabular}
Update: The code presented above is a runnable Perl program. In order to make it work with LaTeX you need to get rid of use strict; and print pascalMatrix(10);. Furthermore, replace sub pascalMatrix by \perlnewcommand{\pascalMatrix}[1]. Remove, rename, or uncomment the previous version of \pascalMatrix.
In reply to Re: Equilateral Pascal's Triangle in perltex
by Perlbotics
in thread Equilateral Pascal's Triangle in perltex
by Coach
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |