我正试图列出给定字谜长度N的数独子块索引集。下面的图表也许能更好地说明我的意思
00 01 02|03 04 05|06 07 08
09 10 11|12 13 14|15 16 17
18 19 20|21 22 23|24 25 26
--------+--------+--------
27 28 29|30 31 32|33 34 35
36 37 38|39 40 41|42 43 44
45 46 47|48 49 50|51 52 53
--------+--------+--------
54 55 56|57 58 59|60 61 62
63 64 65|66 67 68|69 70 71
72 73 74|75 76 77|78 79 80
9x9数独网格最左上方子块的集合看起来像{0,1,2,9,10,11,18,19,20}
然而,到目前为止,我一直在硬编码这些子块,它们只适用于9x9拼图。我想写一个函数来创建任何NxN拼图的集合列表,但是我被卡住了
以下是我目前的代码:
finalList = []
subblockList = [[] for i in range(27)]
for i in range(9):
for j in range(3):
subblockList[i].append(i * 9 + j)
for j in range(3):
subblockList[i + 9].append(i * 9 + 3 + j)
for j in range(3):
subblockList[i + 18].append(i * 9 + 6 + j)
for i in range(0, 27, 3):
finalList.append(set(subblockList[i] + subblockList[i + 1] + subblockList[i + 2]))
print(finalList)
我假设我们想把N^2xn^2的网格分成N^2个子网格,每个子网格都是N^2xn^2。对于N=3,我们将9x9网格分成9个子网格,以此类推
这个问题不是关于Python的,但是熊猫可以提供一个简洁的答案
这将创建一个9x9网格,该网格按3组索引:
现在我们进行堆栈,使列索引成为行的子索引,然后分组
最后,我们提取子网格
这是我们得到的
相关问题 更多 >
编程相关推荐