40 lines
1 KiB
Text
40 lines
1 KiB
Text
/* NetRexx */
|
|
options replace format comments java crossref symbols nobinary
|
|
|
|
numeric digits 1000 -- allow very large numbers
|
|
parse arg rows .
|
|
if rows = '' then rows = 11 -- default to 11 rows
|
|
printPascalTriangle(rows)
|
|
return
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
method printPascalTriangle(rows = 11) public static
|
|
lines = ''
|
|
mx = (factorial(rows - 1) / factorial(rows % 2) / factorial(rows - 1 - rows % 2)).length() -- width of widest number
|
|
|
|
loop row = 1 to rows
|
|
n1 = 1.center(mx)
|
|
line = n1
|
|
loop col = 2 to row
|
|
n2 = col - 1
|
|
n1 = n1 * (row - n2) / n2
|
|
line = line n1.center(mx)
|
|
end col
|
|
lines[row] = line.strip()
|
|
end row
|
|
|
|
-- display triangle
|
|
ml = lines[rows].length() -- length of longest line
|
|
loop row = 1 to rows
|
|
say lines[row].centre(ml)
|
|
end row
|
|
|
|
return
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
method factorial(n) public static
|
|
fac = 1
|
|
loop n_ = 2 to n
|
|
fac = fac * n_
|
|
end n_
|
|
return fac /*calc. factorial*/
|