Eu sunt încercarea de a face o 8 puzzle rezolvare a problemelor folosind diferite algoritmi, cum ar fi BFS,DFS, O* etc. folosind python. Pentru cei care nu sunt familiarizați cu această problemă, 8 problema puzzle este un joc format din 3 rânduri și 3 coloane. Puteți muta țiglă gol numai pe orizontală sau pe verticală, 0 reprezintă țiglă gol. Se pare ca acest lucru (nu am putut adauga imagini din conturile mele reputația.):
https://miro.medium.com/max/679/1*yekmcvT48y6mB8dIcK967Q.png
initial_state = [0,1,3,4,2,5,7,8,6]
goal_state = [1,2,3,4,5,6,7,8,0]
def find_zero(state):
global loc_of_zero
loc_of_zero = (state.index(0))
def swap_positions(list, pos1, pos2):
first = list.pop(pos1)
second = list.pop(pos2-1)
list.insert(pos1,second)
list.insert(pos2,first)
return list
def find_new_nodes(state):
if loc_of_zero == 0:
right = swap_positions(initial_state,0,1)
left = swap_positions(initial_state,0,3)
return(right,left)
find_zero(initial_state)
print(find_new_nodes(initial_state))
Problema pe care o am este aceasta, vreau funcția "find_new_nodes(de stat)" return 2 liste diferite, deci nu pot alege cele mai promițătoare nod, în funcție de algoritmul) și așa mai departe. Dar de ieșire de codul meu este format din două liste identice.
Acest lucru este meu de ieșire: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
Ce pot face pentru a face să se întoarcă 2 liste diferite? Scopul meu este de a reveni toate mișcările posibile în funcție de unde 0 este, folosind find_new_nodes funcție. Scuze daca este o intrebare usoara, Aceasta este prima oară când fac un proiect atât de complicat.