我有以下图形: graph of five states
初始状态为“ A”。如果输入为0,则可以转到“ B”或“ D”,如果输入为1,则可以转到“ E”。我想要一个字符串的所有可能路径。例如,如果输入是字符串'100',我希望最后输入:
'AEBD'
'AEDB'
我用两个单独的字典制作了一个函数,一个用于“ 0”转换,另一个用于“ 1”转换。
这是我的代码:
def possible_moves(play):
posibles_one= {'A':['E'],
'B':['A','C','E'],
'C':['E'],
'D':['A','E'],
'E':['A','C']}
posibles_zero= {'A':['B','D'],
'B':['D'],
'C':['B'],
'D':['B'],
'E':['B','D']}
new_list = []
state= 'A'
for c in play:
if c == '1':
for k,v in posibles_one.items():
if k == state:
new_list.extend([k,v])
state= new_list[-1][-1]
if c == '0':
for k,v in posibles_zero.items():
if k == state:
new_list.extend([k,v])
state = new_list[-1][-1]
return new_list
运行函数时,我得到以下列表:
print(possible_moves('100'))
['A', ['E'], 'E', ['B', 'D'], 'D', ['B']]
我的代码部分起作用。 'A',['E']是输入1的第一个路径。然后,“ E”可以转到“ B”或“ D”。从“ E”开始,到“ 0”,您可以通过['B','D']。但是,我只有'D'而不是'B'的最后可能路径。我不知道如何遍历正在生成的列表中的元素。对解决问题有任何想法吗?