我正在编写一个程序,它使用一组数字三元组,并使用每个三元组中的前两个数字来索引一个二维数组,最后一个作为实际数字进入拼图创建一个数独谜题。该程序的一部分是验证,以确保拼图中的每个数字不会在同一行,列或3x3块中重复。我已经编写了代码来检查行和列,但我不知道如何处理3x3块部分。我可以想到几种可行的方法(例如设置第三个数组维度并根据数组中的位置标记每个数字),但我能想到的一切都是一个漫长而痛苦的过程。是否有一种更简单的方法可以做到这一点,我没有想过?
答案 0 :(得分:0)
一种简单的方法,以伪代码:
对于每个3x3块(x 块,y 块∈{0,3,6}):
对于块内的每个单元格(x 1 ,y 1 ∈{0,1,2}):
对于块内的每个其他单元格(x 2 ,y 2 ∈{0,1,2}):
如果(x 1 ,y 1 )的值等于(x 2 ,y 的值2 ),x 1 ≠x 2 或y 1 ≠y 2 :
除非证明无效,否则该块有效。