Pascal's triangle: Difference between revisions

Content added Content deleted
m (→‎JS ES6: Updated primitives)
No edit summary
Line 1,241: Line 1,241:
Expansion* = POINTER TO ARRAY OF LONGINT;
Expansion* = POINTER TO ARRAY OF LONGINT;


PROCEDURE Show(e: Expansion);
PROCEDURE Show*(e: Expansion);
VAR
VAR
i: INTEGER;
i: INTEGER;
Line 1,253: Line 1,253:
END Show;
END Show;


PROCEDURE GenPascalTriangleFor*(p: LONGINT): Expansion;
PROCEDURE GenFor*(p: LONGINT): Expansion;
VAR
VAR
expA,expB: Expansion;
expA,expB: Expansion;
Line 1,266: Line 1,266:
BEGIN
BEGIN
ASSERT(p > 0);
ASSERT(p >= 0);
DEC(p); (* adjust p to work with arrays starting at 0 index *)
NEW(expA,p + 2);NEW(expB,p + 2);
NEW(expA,p + 2);NEW(expB,p + 2);
FOR i := 0 TO p DO
FOR i := 0 TO p DO
Line 1,284: Line 1,283:
expB := NIL; (* for the GC *)
expB := NIL; (* for the GC *)
RETURN expA
RETURN expA
END GenFor;
END GenPascalTriangleFor;




Line 1,299: Line 1,298:
RETURN
RETURN
ELSIF (s.type = TextMappers.int) THEN
ELSIF (s.type = TextMappers.int) THEN
exp := GenPascalTriangleFor(s.int);
exp := GenFor(s.int);
Show(exp)
Show(exp)
END;
END;
Line 1,308: Line 1,307:
END PascalTriangle.
END PascalTriangle.
</lang>
</lang>
<pre>Execute: ^Q PascalTriangle.Do 1 2 3 4 5 6 7 8 9 10 11 12~</pre>
<pre>Execute: ^Q PascalTriangle.Do 0 1 2 3 4 5 6 7 8 9 10 11 12~</pre>
{{out}}
{{out}}
<pre>
<pre>
1
1
1 1
1 1
1 2 1
1 2 1
Line 1,323: Line 1,322:
1 10 45 120 210 252 210 120 45 10 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
</pre>
</pre>
=={{header|D}}==
=={{header|D}}==