**[**Back to MATH SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**

*{
LOU DUCHEZ
>Also, does anyone have anycode to do Pascal's Triangle?
The pattern is:
1 1
1 2 1
1 3 3 1
1 4 6 4 1
where each element = the sum of the two above it.
Arrange it like this:
0110 -- The zeros are needed so that the algorithm can process the 1's.
01210
013310
0146410
I'd have two Arrays: one shows the last row's figures, and the other holds
the current row's figures. Each "new" element (call the index "i") = the
sum of "previous" element "i" + "previous" element "i - 1".
}
***Procedure **CalcPascalRow(r : Word); *{ which row to calculate }
***Var
**prows : **Array**[0..1, 0..100] **of **Word;*{ your two Arrays }
*thisrow,
lastrow : Byte; *{ point to this row & last row }
*i, j : Word; *{ counters }
***begin
**lastrow := 0; *{ set up "which row is which" }
*thisrow := 1;
prows[lastrow, 0] := 0; *{ set up row "1": 0110 }
*prows[lastrow, 1] := 1;
prows[lastrow, 2] := 1;
prows[lastrow, 3] := 0;
**For **j := 2 **to **r **do
begin ***{ generate each "line" starting w/2 }
*prows[thisrow, 0] := 0;
**For **i := 1 **to **j + 1 **do
begin ***{ each "new" element = sum of "old" }
*prows[thisrow, i] := *{ element + predecessor to "old" }
*prows[lastrow, i] + *{ element }
*prows[lastrow, i - 1];
**end**;
prows[thisrow, j + 2] := 0;
lastrow := thisrow; *{ prepare For next iteration }
*thisrow := (thisrow + 1) **mod **2;
**end**;
**For **i := 1 **to **r + 1 **do
***{ Write each element of desired line }
*Write(prows[lastrow, i] : 4);
Writeln;
**end**;

**[**Back to MATH SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**