42 lines
1.0 KiB
Python

def count(a: list[list[int]], i: int, j: int) -> list[int]:
if i == len(a) or j == len(a[0]):
return None
if (a[i][j] > 100 and a[i][j] < 500) or (a[i][j] > -400 and a[i][j] < 0):
return None
r = count(a, i, j+1)
b = count(a, i+1, j)
c = a[i][j]
if r == None and b == None and i == len(a)-1 and j == len(a[0])-1:
return [[c, [[i, j]]], [c, [[i, j]]]]
if r == None and b == None:
return None
if r == None:
return [[c + b[0][0], [*b[0][1], [i, j]]], [c + b[1][0], [*b[1][1], [i, j]]]]
if b == None:
return [[c + r[0][0], [*r[0][1], [i, j]]], [c + r[1][0], [*r[1][1], [i, j]]]]
mmax = max(r[0][0], b[0][0])
mmin = min(r[1][0], b[1][0])
Marr = r[0][1] if mmax == r[0][0] else b[0][1]
marr = r[1][1] if mmin == r[1][0] else b[1][1]
return [[c + mmax, [*Marr, [i, j]]], [c + mmin, [*marr, [i, j]]]]
with open("dat/18-13.csv", 'r') as f:
# with open("24.csv", 'r') as f:
a = [[int(i.strip()) for i in row.split(';')] for row in f.readlines()]
ret = count(a, 0, 0)
print(ret[0])
print(ret[1])
# 1535 975