遍历数独子网格以检查特定值
Iterate through sudoku subgrid to check for specific value
我正在尝试创建一个给定数独板、行、列和值的函数,它遍历行和列所属的子网格,并检查该值是否在该子网格中。我已经制作了识别行和列属于哪个子网格的函数。我坚持使用检查值是否在该子网格中的函数。
例如:
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)。输出应该 return 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.
我希望我解释清楚了,如果你有任何疑问,请不要犹豫。
[评论太长]
如果你的代码和数据结构多一点,那么理解你到目前为止所拥有的东西会更容易。通常(但绝对不总是),数独板被设置为行列表,每一行都是一个数字列表,零代表空白:
puzzle = [[1,0,7,0,0,5,4,0,0],
[9,0,0,3,7,0,0,0,0],
[0,2,3,0,8,0,0,0,0],
[0,9,2,0,0,0,0,7,0],
[0,7,0,0,6,0,0,1,0],
[0,6,0,0,0,0,8,9,0],
[0,0,0,0,4,0,3,6,0],
[0,0,0,0,3,7,0,0,1],
[0,0,8,2,0,0,5,0,7]]
这可以让你找到网格上所有东西的位置,目前我认为你做不到 - 你没有正确记录网格中条目的位置(因为你没有记录空格)。如果这不是您存储数据的方式,或者即使是,您也应该解释一下。
在您的示例代码中,您有奇怪的 for x in str(x_origin):
,它通过 x_origin
的文本表示的 个字符 迭代 x
。这似乎是完全错误的;更有可能的是你想要 for x in range(x_origin,x_origin+3)
我正在尝试创建一个给定数独板、行、列和值的函数,它遍历行和列所属的子网格,并检查该值是否在该子网格中。我已经制作了识别行和列属于哪个子网格的函数。我坚持使用检查值是否在该子网格中的函数。 例如:
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)。输出应该 return 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.
我希望我解释清楚了,如果你有任何疑问,请不要犹豫。
[评论太长]
如果你的代码和数据结构多一点,那么理解你到目前为止所拥有的东西会更容易。通常(但绝对不总是),数独板被设置为行列表,每一行都是一个数字列表,零代表空白:
puzzle = [[1,0,7,0,0,5,4,0,0],
[9,0,0,3,7,0,0,0,0],
[0,2,3,0,8,0,0,0,0],
[0,9,2,0,0,0,0,7,0],
[0,7,0,0,6,0,0,1,0],
[0,6,0,0,0,0,8,9,0],
[0,0,0,0,4,0,3,6,0],
[0,0,0,0,3,7,0,0,1],
[0,0,8,2,0,0,5,0,7]]
这可以让你找到网格上所有东西的位置,目前我认为你做不到 - 你没有正确记录网格中条目的位置(因为你没有记录空格)。如果这不是您存储数据的方式,或者即使是,您也应该解释一下。
在您的示例代码中,您有奇怪的 for x in str(x_origin):
,它通过 x_origin
的文本表示的 个字符 迭代 x
。这似乎是完全错误的;更有可能的是你想要 for x in range(x_origin,x_origin+3)