-
Notifications
You must be signed in to change notification settings - Fork 0
/
problem 18.py
51 lines (45 loc) · 1.23 KB
/
problem 18.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
triangle = [
[75]
,[95, 64]
,[17, 47, 82]
,[18, 35, 87, 10]
,[20, 4, 82, 47, 65]
,[19, 1, 23, 75, 3, 34]
,[88, 2, 77, 73, 7, 63, 67]
,[99, 65, 4, 28, 6, 16, 70, 92]
,[41, 41, 26, 56, 83, 40, 80, 70, 33]
,[41, 48, 72, 33, 47, 32, 37, 16, 94, 29]
,[53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14]
,[70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57]
,[91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48]
,[63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31]
,[4, 62, 98, 27, 23, 9, 70 ,98, 73 ,93, 38 ,53, 60, 4 ,23]
]
def invertTriangle():
invertedTriangle = []
for i in triangle:
invertedTriangle = [i] + invertedTriangle
return invertedTriangle
def maxPathSum(triangle):
total = 0
position = 0
for row in triangle:
for number in row:
if number == 63:
break
for index in range(0,len(row)+1):
#print(index)
candidates = []
if index -1 == position:
position -= 1
candidates.append(row[index])
if index == position:
candidates.append(row[index])
print(candidates)
if index + 1 == position:
candidates.append(row[index])
position += 1
if len(candidates):
total += max(candidates)
return total
print(maxPathSum(invertTriangle()))