Files
project_euler/18/main.py

22 lines
644 B
Python

def parse(s: str) -> list[list[int]]:
return [[int(i) for i in l.split()]
for l in s.strip().splitlines()]
def solve(l: list[list[int]]) -> int:
cache = {}
n = len(l)
l = reversed(l)
for i, row in enumerate(l):
for j, val in enumerate(row):
if i == 0:
cache.update({(i, j): val})
else:
l = cache[(i-1, j)]
r = cache[(i-1, j+1)]
cache.update({(i, j): val+max(l, r)})
return cache[(n-1, 0)]
if __name__ == '__main__':
with open("input", "r") as f:
input = f.read()
print(solve(parse(input)))