gpt4 book ai didi

python - 如何列出具有 3 种不同状态的 3x3 板的所有可能性?

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:05 25 4
gpt4 key购买 nike

我试图列出 3x3 网格的所有可能性,具有 3 种状态:0、1 和 2。棋盘采用列表格式,因此我们列出

[0,0,0,0,0,0,0,0,0], 
[1,0,0,0,0,0,0,0,0],
[2,0,0,0,0,0,0,0,0],
[0,1,0,0,0,0,0,0,0]

我试图通过这样计数来做到这一点:http://hastebin.com/ozapigageb.py ,但它导致计数由于某种原因只生成 1。我要么想知道一种更有效的方法,要么我做错了什么。提前感谢您的帮助。

最佳答案

你可以使用 itertools.product:

for board in itertools.product([0, 1, 2], repeat=9):
...

在您的代码中,您或多或少地实现了以 3 为基数的加法。您可以将每个单板表示为 0 和 3^9 - 1 = 19,682 之间的整数,并减少您的问题仅将基数 10 转换为基数 3:

def base_convert(n, base):
if n == 0:
return [0]

digits = []

while n:
digits.append(n % base)
n /= base

return digits[::-1]

for n in range(3**9):
digits = base_convert(n, 3)
board = ([0, 0, 0, 0, 0, 0, 0, 0] + digits)[-9:] # pad with 0s to 9 digits

...

关于python - 如何列出具有 3 种不同状态的 3x3 板的所有可能性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448013/

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