def problem_18(f):
from re import findall
with open(f) as triangle:
numbers = triangle.readlines()
numbers = [list(map(int, (findall(r'([0-9]+)+', l)))) for l in numbers]
for i in range(len(numbers)-2, -1, -1):
for j in range(len(numbers[i])):
numbers[i][j] += max((numbers[i+1][j], numbers[i+1][j+1]))
return numbers[0][0]