Pascal's Pyramid is the 3-dimensional version of Pascal's Triangle.
Like in Pascal's Triangle, each number is the sum of numbers above it. The cap of the pyramid (Row 0) is 1. In Row 1, the three numbers are 1, just as in the triangle, because it is the sum of numbers above it. Each number in the following rows is the sum of the numbers above it.
from functools import lru_cache
@lru_cache(maxsize=None)
def trinomial_coefficient(l, n, k):
if l < 0 or n < 0 or k < 0:
return 0
head = (n == 0 and k == 0)
bottom_left = (n == l) and (k == 0)
bottom_right = (n == l) and (k == l)
if head or bottom_left or bottom_right:
return 1
return (trinomial_coefficient(l-1, n-1, k-1) +
trinomial_coefficient(l-1, n-1, k) +
trinomial_coefficient(l-1, n, k))
def pascal_pyramid(l):
rows = list()
for n in range(l+1):
coefficients = list()
for k in range(n+1):
coefficients.append(trinomial_coefficient(l, n, k))
rows.append(coefficients)
return rows
for row in pascal_pyramid(5-1):
print(row)
Top comments (0)