gpt4 book ai didi

python - 将此程序中所有可能路径返回到嵌套列表的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:14 25 4
gpt4 key购买 nike

所以我有一个带有函数 findViableMoves(base) 的游戏。如果我在开始时使用参数 base 调用此函数,我会得到一个输出 [move1, move2 ... moven],它表示所有 n 个可行的移动用户可以执行给出状态 base。 (实际上有 2 个根移动)

在执行一个移动时,比如 move2 - base 根据移动而改变,函数被再次调用,现在我们有一个 findViableMoves(base) 的输出 [move21,move22 .... move2n].

Depth-first-tree

如果你看一下这张图,情况非常相似——没有回环,它只是一棵普通的树。我需要一个程序,在给定 base 起始状态的情况下,对所有可能的移动执行深度优先搜索(我认为?),然后在列表中返回:

[[move1,move11,move111],[move1,move11,move112],....[moven,moven1,moven11],...]

这些列表中会有更多元素(最多 14 个),但我只是想知道是否有人可以提供有关如何构建算法来执行此操作的任何提示?效率对我来说并不重要,因为路径不多,我只想暂时完成。

最佳答案

我不是 100% 清楚你在追求什么,但如果你有一个列表或类似的可迭代对象在循环发生时发生变化,你可以尝试下面的方法。

此示例允许列表和循环条件在循环执行期间保持动态。

import random
import sys
import time

changing_list = ['A', 27, 0.12]

def perform_operation(changing_list, counter):
sometimes_add_another_element_threshold = 0.6
if random.random() > sometimes_add_another_element_threshold:
changing_list.append(random.random())
print(changing_list[counter])

def main(z=0):
safety_limit = 100
counter = 0
condition = True
while condition and counter < safety_limit:
perform_operation(changing_list, counter)
counter += 1
condition = counter<len(changing_list)

print("loop finished")


if __name__ == '__main__':
start_time = time.time()
main(int(sys.argv[1])) if len(sys.argv)>1 else main()
print(time.time() - start_time)

它提供看起来像这样的不同长度的输出:

A
27
0.12
0.21045788812161237
0.20230442292518247
loop finished
0.0058634281158447266

关于python - 将此程序中所有可能路径返回到嵌套列表的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51164712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com