уточню. сейчас алгоритм убирает пустую фишку влево вверх. а я хочу убрать ее вправо вниз.
все решение найдено. у меня для такой конфигурации пятнашек была полностью неправильно написана эвристика. возможно кому то пригодится...
def manhattan_distance(puzz, end):
"""
Manhettan distance heuristic
"""
m = eval(puzz)
a = eval(end)
lst = []
result = 0
for x in range(4):
for y in range(4):
if a[x][y] == 0:
continue
lst.append([[x, y], a[x][y]])
for i in range(4):
for j in range(4):
if m[i][j] == 0:
continue
for s in lst:
if s[1] == m[i][j]:
x = s[0][0]
y = s[0][1]
result += abs(i - x) + abs(j - y)
return result