BFS, DFS, A * vb. Gibi farklı algoritmalar kullanarak 8 bulmaca problem çözücü yapmaya çalışıyorum. python kullanarak. Soruna aşina olmayanlar için, 8 bulmaca problemi 3 satır ve 3 sütundan oluşan bir oyundur. Boş döşemeyi yalnızca yatay veya dikey olarak taşıyabilirsiniz, 0 boş döşemeyi temsil eder. Şuna benziyor (hesaplarımın itibarı nedeniyle görüntüleri ekleyemedim.):
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))
Sahip olduğum sorun şudur: "find_new_nodes(state)" işlevinin 2 farklı liste döndürmesini istiyorum, böylece algoritmaya bağlı olarak en umut verici düğümü seçebilirim) vb. Ancak kodumun çıktısı iki özdeş listeden oluşuyor.
Bu benim çıktımdır: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
2 Farklı liste döndürmesi için ne yapabilirim? Amacım, find_new_nodes işlevini kullanarak 0'ın nerede olduğuna bağlı olarak olası tüm hareketleri döndürmektir. Bu kolay bir soru ise özür dilerim, Bu benim ilk defa bir projeyi bu kadar karmaşık hale getiriyorum.