gpt4 book ai didi

python - 在 Python 中递归生成每个井字游戏

转载 作者:太空狗 更新时间:2023-10-30 00:12:33 24 4
gpt4 key购买 nike

我正在做一个项目,生成所有可能的井字游戏数组。作为概念证明,我正在编写代码以用 9 个子数组填充一个数组。每个子数组都有两个值,第一个是 0 或 1(分别代表 x 和 o),第二个是从 1 到 9(代表它被放置的时间)。我想取出的数组示例如下所示:

[[0, 0], [1, 1], [0, 2], [1, 3], [0, 4], [1, 5], [0, 6], [1, 7], [0, 8]]

我已经编写了代码,使用 9 个 for 循环,每个循环都嵌套在上面的循环中,这给了我想要的结果(每个可能的数组,每个数组都是唯一的)。但我正在尝试编写代码,使用递归并避免编写大量嵌套循环。

当我运行下面的代码时,它只能生成上面的数组,不能创建其他组合。我的代码如下:

print("running...")

allGames = []
checkCurrentGame = [5, 5, 5, 5, 5, 5, 5, 5, 5]
stepsDown = 0

def cleanGame(move, currentGame):
for j in range(9):
if (currentGame[j][1] >= move):
currentGame[j] = [5, 0]

def completeMove(moveNumber, currentGame):
global stepsDown
stepsDown = stepsDown + 1
for i in range(9):
cleanGame(moveNumber, currentGame)
if (currentGame[i][0] == 5):
currentGame[i][0] = i % 2
currentGame[i][1] = moveNumber
allGames.append(currentGame)
break
if (stepsDown < 9):
generateGame(currentGame)

def generateGame(currentGame):
for i in range(9):
completeMove(i, currentGame)

generateGame([[5, 0], [5, 0], [5, 0], [5, 0], [5, 0], [5, 0], [5, 0], [5, 0], [5, 0]])

for x in range(len(allGames)):
print(allGames[x])

最佳答案

如果我正确理解你的问题,应该这样做,但这不是递归 -

import itertools
[zip(p, range(0, 9)) for p in itertools.product([0, 1], repeat=9)]

代码首先生成一个棋盘(9个0或1)-

itertools.product([0, 1], repeat=9)

然后向其中添加索引数据。

我建议您查看 itertools

关于python - 在 Python 中递归生成每个井字游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53437620/

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