Eu estou tentando fazer um 8 de quebra-cabeça solucionador de problemas usando diferentes algoritmos, tais como BFS,DFS, UM* etc. utilizando python. Para aqueles que não estão familiarizados com o problema, de 8 de puzzle problema é um jogo que consiste em 3 linhas e 3 colunas. Você pode mover o vazio telha apenas na horizontal ou na vertical, 0 representa o vazio da telha. Ele se parece com isso (eu não poderia adicionar as imagens, devido às minhas contas reputação.):
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))
O problema que eu tenho é esse, eu quero a função "find_new_nodes(estado)" return 2 listas diferentes, para que eu possa escolher o mais promissor nó, dependendo do algoritmo) e assim por diante. Mas a saída do meu código é composto de duas listas idênticas.
Esta é a minha saída: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
O que posso fazer para ele voltar 2 listas diferentes? Meu objetivo é retornar todos os movimentos possíveis, dependendo de onde o 0 é, usando o find_new_nodes função. Desculpas se isso é uma pergunta fácil, Esta é a minha primeira vez fazendo um projeto complicado.