Je suis en train de faire un 8 puzzle de la résolution de problèmes à l'aide de différents algorithmes, tels que la BFS,DFS, UN* etc. à l'aide de python. Pour ceux qui ne sont pas familiers avec le problème, 8 puzzle problème est un jeu composé de 3 lignes et 3 colonnes. Vous pouvez déplacer la tuile vide uniquement à l'horizontale ou à la verticale, 0 représente la tuile vide. Il ressemble à ceci (je ne pouvais pas ajouter des images due à mes comptes réputation.):
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))
Le problème que j'ai est cela, je veux que la fonction "find_new_nodes(état)" retour de 2 listes différentes, j'ai donc le choix le plus prometteur nœud, en fonction de l'algorithme) et ainsi de suite. Mais la sortie de mon code se compose de deux listes identiques.
C'est ma sortie: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
Que puis-je faire pour le faire revenir 2 listes différentes? Mon but est de retourner tous les coups possibles, selon l'endroit où 0 est, à l'aide de la find_new_nodes fonction. Toutes mes excuses si c'est une question facile, C'est ma première fois de faire un projet de cette complexité.