Если мы представим двумерную сетку в плоскости xy, расстояние между двумя узлами - это расстояние в плоскости x плюс расстояние в плоскости y.
g=[[0,0,0,'#',0],
[0,'X',0,0,0],
[0,'#',0,0,0],
[0,0,0,'#',0]]
def get_dist(start,end): #pass tuples of x,y
x1,y1=start
x2,y2=end
return abs(x1-x2)+abs(y1-y2)
def find_start(g): #if you already have it, ignore
for y,col in enumerate(g):
for x,item in enumerate(col):
if item=='X':
return x,y
start = find_start(g)
for y,col in enumerate(g):
for x,item in enumerate(col):
if item == 0: #if is not a start or wall
g[y][x]=get_dist(start,(x,y))
, которое возвращает
[2, 1, 2, '#', 4]
[1, 'X', 1, 2, 3]
[2, '#', 2, 3, 4]
[3, 2, 3, '#', 5]