【发布时间】:2020-06-30 09:19:25
【问题描述】:
我正在尝试枚举给定大小的有效数独的数量。我有一个函数将数独转换为列表作为输入并检查它是否是有效的数独。我最初的方法只是编写嵌套的 for 循环来检查列表的每个组合。对于 2 x 2 数独,我的代码如下所示:
def enumerate2x2():
cnt = 0
for i1 in range(1,3):
for i2 in range(1,3):
for i3 in range(1,3):
for i4 in range(1,3):
if checkValidSudoku([i1, i2, i3, i4]):
cnt += 1
print(cnt)
此代码仅生成 4 元素列表(即 2x2 数独中有多少个正方形)的所有可能组合,列表中的每个元素要么是 1 要么是 2。然后它会检查每个组合。
但是,当我在 5x5 数独上尝试这个时遇到了一个问题,因为 python 只允许你有 20 个嵌套循环,所以我想将这种丑陋的方法推广到适用于任何大小的数独的东西。任何帮助将不胜感激。
【问题讨论】:
-
这听起来像是一个代码高尔夫问题
标签: python-3.x combinations itertools combinatorics sudoku