【问题标题】:Iterate through sudoku subgrid to check for specific value遍历数独子网格以检查特定值
【发布时间】:2021-05-09 17:30:58
【问题描述】:

我试图创建一个给定数独板、行、列和值的函数,它遍历行和列所属的子网格并检查值是否在该子网格中。我已经制作了识别行和列属于哪个子网格的函数。我坚持使用检查值是否在该子网格中的函数。 例如:

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.

我希望我解释了我自己,如果您有任何疑问,请不要犹豫。

【问题讨论】:

标签: python python-3.x sudoku


【解决方案1】:

[评论太长]

使用更多代码和数据结构会更容易理解您目前所拥有的内容。通常(但绝对不总是),数独板设置为行列表,每个行都是数字列表,零代表空白:

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)

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 2011-10-28
  • 2017-05-26
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多