当前位置: 首页 > 知识库问答 >
问题:

迭代数独子网格以检查特定值

孟振
2023-03-14

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

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.

我希望我能自我解释,如果你有任何疑问,请尽管问。

共有1个答案

唐修诚
2023-03-14

[评论太长]

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

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]]

这可以让你找到网格上的所有内容,目前我认为你做不到——你没有正确记录网格中条目的位置(因为你没有记录空白)。如果这不是你存储数据的方式,或者即使是这样,你应该解释一下。

在您的示例代码中,您在str(x_origin):中有奇怪的for x,它遍历x_origin的文本表示的字符。这似乎完全错误;更有可能的是,您希望在范围(x_origin,x_origin3)中使用类似于for x的内容

 类似资料:
  • 我已经创建了一个程序,允许用户输入一个数独拼图的所有值,即9x9,将这些值存储在一个数组中,并可以检查所有行和列中的值是否不同,但我很难理解如何实现代码来关注3x3的每个子网格。我想我必须有最后一个嵌套for循环,它可能被3除,但我完全被这部分卡住了。 }

  • 我曾经用C语言编写过一个数独谜题,但我陷入了一个问题:检查每个3x3网格是否没有重复的值。这是我的代码: 我知道在function Valid中,我应该有条件检查每个3x3网格,但我没有弄明白:我找到了创建一些变量开始和结束的解决方案,每个变量得到如下结果: 在我的例子中,i和j是ii和jj。 例如,我们发现了这样的东西: 我试过这个密码,但没用。 我不明白这一点:我有下一个数独矩阵: 如果我的代

  • 这个程序的作用: 这个程序从一个类中获取值,并使用这些值作为数独游戏的起始值。我们将在一个典型的数独9x9网格中打印这些内容。然后,程序会提示用户在网格上给出一个坐标点,并在其中输入一个值。目前我正在做的是确保用户输入的值对解决这个难题是有效的。填好拼图后,每列、每行和3x3方块中不再有任何重复值,游戏应结束,输出应为“拼图完成”。 到目前为止,我的程序成功地检查了列和行中的重复值,但我不知道从哪

  • 在一个日期列中有一个表,在同一个日期的不同时间有这么多总计的条目,但我不担心时间。我需要找到某些日期所有总额,随着用户名。当我使用下面的查询。它显示语法错误 选择用户名,总额,从账单日期='2013-04-12' 在上面的查询日期是列名,请帮我。

  • 我正在用python为我的CIS类做作业。我们得给数独棋盘编码。在9x9电路板中,我们显然必须检查每一行、col和3x3正方形是否存在重复项。我对如何用3x3的正方形来检查数字的想法有点固执。下面是我检查每一行和每一列的代码,如果有人能帮我一点轮廓或一种方法,那就是检查每一个3x3的正方形,这将是惊人的!

  • 在MDN文档中:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of 用于。。。of构造被描述为能够在“iterable”对象上迭代。但是有没有一个好的方法来决定一个对象是否是可移植的呢? 我试图找到数组、迭代器和生成器的公共属性,但无法做到这一点。 除了为。。。检查try块中的,