Lösningen blev:
1) räkna upp steg-nummer
2) Iterera över nuvarande position(er) och gå ett steg från dessa åt alla håll om möjligt
3) Märk dessa nya positioner (om dom inte redan är satta) med steg-nummer och börja om i steg 1 med dessa nya positioner
avbryt detta när end-positionen får ett värde.
Av vad ni skriver här verkar det vara en BFS lösning?
file = open("input")
dirs = {(1,0), (0,1),(-1,0),(0,-1)}
values={}
grid ={}
curr=[]
for x,line in enumerate(file):
for y,char in enumerate(line.strip()):
if char == "S" or char =="a":
grid[x,y] =1
curr.append((x,y))
elif char == "E":
grid[x,y] =26
end = x,y
else:
grid[x,y] = ord(char)-96
step = 0
while True:
step += 1
prep = []
for i in curr:
for d in dirs:
point = (i[0] + d[0]),(i[1] + d[1])
if point in grid:
if not point in values:
if grid[i]+1 >= grid[point]:
values[point] = step
prep.append(point)
if point==end:
print(step)
exit()
curr = prep