A function to return n lines of Pascal's Triangle.
pascalsTriangle(numberOfRows)
: Return n lines of Pascal's Triangle as a multi-dimensional array.
let triangle = pascalsTriangle(5);
console.log(triangle);
[ [ 1 ],
[ 1, 1 ],
[ 1, 2, 1 ],
[ 1, 3, 3, 1 ],
[ 1, 4, 6, 4, 1 ],
[ 1, 5, 10, 10, 5, 1 ] ]
printRightTriangle(triangle, numberOfSpaces, paddingCharacter)
: Format array as a right triangle with equally spaced columns.
let triangle = pascalsTriangle(10);
let str = printRightTriangle(triangle, 2, ' ');
console.log(str);
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
nChooseK(n,k)
: return the value from any place in Pascal's Triangle using combinations: n choose k( n = row, k = term ).
// log all values k for row 5
console.log(nChooseK(5,0));
1
console.log(nChooseK(5,1));
5
console.log(nChooseK(5,2));
10
console.log(nChooseK(5,3));
10
console.log(nChooseK(5,4));
5
console.log(nChooseK(5,5));
1
format(triangle, preRow, postRow, preColumn, postColumn)
: wraps individual elements and rows with provided values.
For example, to create an HTML table:
let triangle = pascalsTriangle(15);
// make all rows the same length, so they have the same number of columns
let nTriangle = normalizeRows(triangle,'');
let html = [];
html.push('<table>');
html.push('<tbody>');
html.push(format(nTriangle, '<tr>', '</tr>', '<td>', '</td>'));
html.push('</tbody>');
html.push('</table>');
console.log(html.join('\n'));
1 | |||||||||||||||
1 | 1 | ||||||||||||||
1 | 2 | 1 | |||||||||||||
1 | 3 | 3 | 1 | ||||||||||||
1 | 4 | 6 | 4 | 1 | |||||||||||
1 | 5 | 10 | 10 | 5 | 1 | ||||||||||
1 | 6 | 15 | 20 | 15 | 6 | 1 | |||||||||
1 | 7 | 21 | 35 | 35 | 21 | 7 | 1 | ||||||||
1 | 8 | 28 | 56 | 70 | 56 | 28 | 8 | 1 | |||||||
1 | 9 | 36 | 84 | 126 | 126 | 84 | 36 | 9 | 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 | 12 | 66 | 220 | 495 | 792 | 924 | 792 | 495 | 220 | 66 | 12 | 1 | |||
1 | 13 | 78 | 286 | 715 | 1287 | 1716 | 1716 | 1287 | 715 | 286 | 78 | 13 | 1 | ||
1 | 14 | 91 | 364 | 1001 | 2002 | 3003 | 3432 | 3003 | 2002 | 1001 | 364 | 91 | 14 | 1 | |
1 | 15 | 105 | 455 | 1365 | 3003 | 5005 | 6435 | 6435 | 5005 | 3003 | 1365 | 455 | 105 | 15 | 1 |