56 lines
1.2 KiB
Python
56 lines
1.2 KiB
Python
target = 1074
|
|
|
|
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 ],
|
|
]
|
|
|
|
length = len(triangle)
|
|
|
|
routes = 2 ** (length - 1)
|
|
|
|
def get_bits (nbr):
|
|
rest = 0
|
|
|
|
result = []
|
|
|
|
for i in list(range(0, length - 1)):
|
|
value = 2 ** (length - 2 - i)
|
|
bit = nbr // value
|
|
nbr = nbr % value
|
|
result.append(bit)
|
|
|
|
return result
|
|
|
|
largest = 0
|
|
|
|
# for i in range(0, routes - 1):
|
|
for i in range(0, routes):
|
|
bits = get_bits(i)
|
|
|
|
index = 0
|
|
total = triangle[0][0]
|
|
|
|
for j in range(0, length - 1):
|
|
index += bits[j]
|
|
total += triangle[j + 1][index]
|
|
|
|
if (total > largest):
|
|
largest = total
|
|
|
|
print(largest)
|
|
print(largest == target)
|