遍历数独子网格以检查特定值

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)