-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpascal_tri.py
67 lines (64 loc) · 5.81 KB
/
pascal_tri.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env python3
#This script generage pascals' triangle til big number like below example.
#
# 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
# 1 16 120 560 1820 4368 8008 11440 12870 11440 8008 4368 1820 560 120 16 1
# 1 17 136 680 2380 6188 12376 19448 24310 24310 19448 12376 6188 2380 680 136 17 1
# 1 18 153 816 3060 8568 18564 31824 43758 48620 43758 31824 18564 8568 3060 816 153 18 1
# 1 19 171 969 3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628 3876 969 171 19 1
# 1 20 190 1140 4845 15504 38760 77520 125970 167960 184756 167960 125970 77520 38760 15504 4845 1140 190 20 1
# 1 21 210 1330 5985 20349 54264 116280 203490 293930 352716 352716 293930 203490 116280 54264 20349 5985 1330 210 21 1
# 1 22 231 1540 7315 26334 74613 170544 319770 497420 646646 705432 646646 497420 319770 170544 74613 26334 7315 1540 231 22 1
# 1 23 253 1771 8855 33649 100947 245157 490314 817190 1144066 1352078 1352078 1144066 817190 490314 245157 100947 33649 8855 1771 253 23 1
# 1 24 276 2024 10626 42504 134596 346104 735471 1307504 1961256 2496144 2704156 2496144 1961256 1307504 735471 346104 134596 42504 10626 2024 276 24 1
# 1 25 300 2300 12650 53130 177100 480700 1081575 2042975 3268760 4457400 5200300 5200300 4457400 3268760 2042975 1081575 480700 177100 53130 12650 2300 300 25 1
# 1 26 325 2600 14950 65780 230230 657800 1562275 3124550 5311735 7726160 9657700 10400600 9657700 7726160 5311735 3124550 1562275 657800 230230 65780 14950 2600 325 26 1
# 1 27 351 2925 17550 80730 296010 888030 2220075 4686825 8436285 13037895 17383860 20058300 20058300 17383860 13037895 8436285 4686825 2220075 888030 296010 80730 17550 2925 351 27 1
# 1 28 378 3276 20475 98280 376740 1184040 3108105 6906900 13123110 21474180 30421755 37442160 40116600 37442160 30421755 21474180 13123110 6906900 3108105 1184040 376740 98280 20475 3276 378 28 1
# 1 29 406 3654 23751 118755 475020 1560780 4292145 10015005 20030010 34597290 51895935 67863915 77558760 77558760 67863915 51895935 34597290 20030010 10015005 4292145 1560780 475020 118755 23751 3654 406 29 1
def pasTri(n):
r1=[]
for i in range(n):
jr=[]
for j in range(i+1):
if j == 0 or j == i:
jr.append(1)
else:
jr.append(r1[i-1][j-1] + r1[i-1][j])
#print(jr)
r1.append(jr)
#Last line max value length
#max_last_line_val=len(str(max(r1[-1])))-1
len_count=len(str(max(r1[-1])))
for i in range(n):
#Regular length
c=n-len(r1)
for j in range(n-i-1):
print(format(" "*c,"<2"), end="")
for j in range(i+1):
#For small and static
#print(format(r1[i][j],"<5"),end=" ")
#print(format(r1[i][j],":<5"),end=" ")
#For big number and dynamic(len_count-auto-counted)
print('{:^{}}'.format(r1[i][j],len_count),end=" ")
print()
#Simple but not precise for large number(n)
#for r2 in r1:
# c=n-len(r2)
# print(" "*c,*r2)
pasTri(30)