2021-12-18 20:11:56 +01:00

47 lines
1.0 KiB
Python

#!/usr/bin/env python
density = []
distance = []
def shortes_path(density, distance):
queue = []
queue.append((0,0))
#import pdb; pdb.set_trace()
while(len(queue)):
pos = queue.pop(0)
v = distance[pos[1]][pos[0]]
for move in ((0,1), (0,-1), (1,0), (-1,0)):
move_x = move[0] + pos[0]
move_y = move[1] + pos[1]
if (move_x) < 0:
continue
if (move_y) < 0:
continue
if (move_y) >= len(density):
continue
if (move_x) >= len(density[move_y]):
continue
if distance[move_y][move_x] is None:
distance[move_y][move_x] = v + density[move_y][move_x]
queue.append((move_x, move_y))
continue
if density[move_y][move_x] + v < distance[move_y][move_x]:
distance[move_y][move_x] = v + density[move_y][move_x]
queue.append((move_x, move_y))
continue
with open("input01.txt","r") as f:
for line in f:
density.append([int(i) for i in line.strip()])
distance.append([None]*len(line.strip()))
distance[0][0] = density[0][0]
shortes_path(density,distance)
print(distance[-1][-1]-distance[0][0])