我试图创建一个函数,给定一个数独板、行、列和值,它遍历该行和列所属的子网格,并检查值是否在该子网格中。我已经做了一个函数来标识行和列所属的子网格。我一直在使用这个函数来检查值是否在子网格中。 例如:
check_subgrid( (3, 9, 1), (2, 3, 5, 8, 6), (6, 1, 4),
(8, 7, 6), (1, 2, 7, 8), (9, 8, 2),
(2, 8, 5), (6, 9, 2, 3, 1), (5, 9, 3)
), 0, 1, 9)
这应该迭代:(3,9,1)、(8,7,6)和(2,8,5)。输出应该返回True,因为子网格中有9,否则返回False。 到目前为止,我掌握的代码如下:
def check_subgrid(sudoku, row, column, value)
x_origin, y_origin = get_subgrid_origin(row, column)
for x in str(x_origin):
for y in str(y_origin):
for i in range(3):
#here I should iterate through every subgrid row looking for the value entered.
我希望我能自我解释,如果你有任何疑问,请尽管问
[评论太长]
如果代码和数据结构再多一点,就更容易理解到目前为止的情况。通常(但绝对不总是),数独板被设置为行列表,每个行都是数字列表,零表示空格:
这使您能够找到网格上的所有内容,目前我认为您无法做到这一点-您没有正确记录网格中条目的位置(因为您没有记录空格)。如果这不是您存储数据的方式,或者即使是这样,您也应该解释一下
在示例代码中,您有一个奇怪的
for x in str(x_origin):
,它通过x_origin
的文本表示的字符迭代x
。这似乎是完全错误的;更有可能的是,您需要类似for x in range(x_origin,x_origin+3)
的东西相关问题 更多 >
编程相关推荐