Sto cercando di fare un 8 puzzle solver di problema utilizzando algoritmi diversi, come BFS,DFS, UN* ecc. usando python. Per coloro che non hanno familiarità con il problema, 8 puzzle problema è un gioco composto da 3 righe e 3 colonne. È possibile spostare la piastrella vuota solo orizzontalmente o verticalmente, 0 rappresenta la piastrella vuota. Sembra che questo (non ho potuto aggiungere le immagini a causa del mio account reputazione.):
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))
Il problema che ho è questo, io voglio la funzione "find_new_nodes(stato)" ritorno 2 liste diverse, quindi posso scegliere il più promettente nodo, a seconda dell'algoritmo) e così via. Ma l'uscita del mio codice è composto da due liste identiche.
Questo è il mio output: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
Cosa posso fare per farlo tornare 2 liste diverse? Il mio obiettivo è quello di restituire tutte le possibili mosse in base a dove lo 0 è, utilizzando il find_new_nodes funzione. Mi scuso se questa è una domanda facile, Questo è il mio primo progetto di questo complesso.