31 lines
669 B
Python
31 lines
669 B
Python
from pprint import pprint as pp
|
|
|
|
def pascal_upp(n):
|
|
s = [[0] * n for _ in range(n)]
|
|
s[0] = [1] * n
|
|
for i in range(1, n):
|
|
for j in range(i, n):
|
|
s[i][j] = s[i-1][j-1] + s[i][j-1]
|
|
return s
|
|
|
|
def pascal_low(n):
|
|
# transpose of pascal_upp(n)
|
|
return [list(x) for x in zip(*pascal_upp(n))]
|
|
|
|
def pascal_sym(n):
|
|
s = [[1] * n for _ in range(n)]
|
|
for i in range(1, n):
|
|
for j in range(1, n):
|
|
s[i][j] = s[i-1][j] + s[i][j-1]
|
|
return s
|
|
|
|
|
|
if __name__ == "__main__":
|
|
n = 5
|
|
print("\nUpper:")
|
|
pp(pascal_upp(n))
|
|
print("\nLower:")
|
|
pp(pascal_low(n))
|
|
print("\nSymmetric:")
|
|
pp(pascal_sym(n))
|