Snažím sa, aby 8 puzzle problém riešiteľ pomocou rôznych algoritmov, ako BFS,DFS, A* pod. pomocou python. Pre tých, ktorí nie sú oboznámení s problémom, 8 puzzle problém je hra pozostáva z 3 riadky a 3 stĺpce. Môžete presunúť na prázdne dlaždice len vodorovne alebo zvisle, 0 predstavuje prázdne dlaždice. Vyzerá to, že tento (nemohol som si pridajte obrázky, vzhľadom na moje účty povesť.):
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 to, čo chcem funkcia "find_new_nodes(štát)" return 2 rôzne zoznamy, tak som si vybrať najsľubnejších uzol, v závislosti od algoritmus) a tak ďalej. Ale výkon môjho kód pozostáva z dvoch identických zoznamy.
Toto je môj výstup: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
Čo môžem urobiť, aby to vráti 2 rôzne zoznamy? Mojím cieľom je vrátiť všetky možné sa pohybuje v závislosti na tom, kde 0 je pomocou find_new_nodes funkciu. Ospravedlňujem sa, ak to je jednoduchá otázka, Toto je prvýkrát, čo projekt, to komplikované.