我想让一个8拼图解决问题采用不同的算法,如BFS、DFS、*等。 使用蟒蛇。 对于那些不熟悉的问题,8谜问题是一个游戏组成的3行和3列。 你可以移动的空瓦只有水平或垂直,0代表的空瓦。 它看起来像这样(我不能添加的图像由于我的帐户信誉。):
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))
我的问题是这样的,我想要功能"find_new_nodes(国家)"返回2不同的列表,因此我可以选择最有前途的节点,根据不同的算法)等。 但是输出的我的代码中包括两个完全相同的名单。
这是我的输出: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
我能做些什么,以使其返回2不同的列表? 我的目标是向返回的所有可能的行动取决于0,使用find_new_nodes功能。 道歉如果这是一个简单的问题,这是我第一次使一个项目这个复杂。