Snažím se, aby 8 puzzle řešitel problému pomocí různých algoritmů, jako BFS,DFS, A* atd. pomocí python. Pro ty, kteří nejsou obeznámeni s problémem, 8 problém puzzle je hra, se skládá ze 3 řádků a 3 sloupců. Můžete přesunout prázdný dlaždice pouze vodorovně nebo svisle, 0 představuje prázdné dlaždice. Vypadá to, že tento (nemohl jsem přidat obrázky, vzhledem k mé účty pověst.):
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))
Problém mám, je, chci, funkce "find_new_nodes(stát)" return 2 různé seznamy, takže si můžu vybrat nejslibnější uzel, v závislosti na algoritmu) a tak dále. Ale výstup můj kód se skládá ze dvou totožných seznamů.
Tohle je můj výstup: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
Co mohu udělat, aby se to vrátit 2 různé seznamy? Mým cílem je vrátit všechny možné pohyby v závislosti na tom, kde 0 je pomocí find_new_nodes funkce. Omlouvám se, pokud to je jednoduchá otázka, To je můj první čas vytvoření projektu této komplikované.