日16 :パスカルのピラミッド
5610 ワード
パスカルのピラミッドは、パスカルの三角形の三次元版です.
Pascalの三角形のように、各々の数はそれの上の数の合計です.ピラミッド(行0)のキャップは1である.行1では、3つの数字は1で、三角形の場合と同じように、上の数字の合計です.次の行の各番号は、上記の数値の合計です.
Pascalの三角形のように、各々の数はそれの上の数の合計です.ピラミッド(行0)のキャップは1である.行1では、3つの数字は1で、三角形の場合と同じように、上の数字の合計です.次の行の各番号は、上記の数値の合計です.
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)
Reference
この問題について(日16 :パスカルのピラミッド), 我々は、より多くの情報をここで見つけました https://dev.to/mattryanmtl/day-16-pascal-s-pyramid-3a10テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol