试图测试数独谜题的有效性:在每个3x3平方中检查重复项时遇到问题

时间:2014-10-26 19:08:13

标签: duplicates sudoku

这是我的方法:

public static boolean hasDuplicatesInSections(int[][] puzzle){

    z = 2;
    w = 0;
    while(z <= 8){ 
    for(i = w; i <= z; i++){
       for(j = w; j <= z; j++){
         for(l = w; l <= z; l++){   
            for(k = w; k <= z; k++){

             if ((puzzle[l][k] == puzzle[i][j]) && 
                 (puzzle[l][k] != 0)            &&
                 (k != j)){      

                 System.out.println("There was a match in a square. Shame on you.");
                 return true;   
             }
             }
             }
       }
       }
    z += 3;
    w += 3;
   }
    System.out.println("There wasn't a match in a square. Good job!");
    return false;
}

我为拼图制作了一个9x9的2-D int数组。 0意味着只有一个空白区域。该方法查看每个3x3平方,并说明是否在一个中找到重复项。但有时它仍然说有没有匹配的时候。任何人都可以看到可能出错的地方吗?

1 个答案:

答案 0 :(得分:0)

发现了什么问题。除了检查时,我的所有比较和迭代都是正确的:

 (k != j))

只检查列是否等于错误的列。所以我所做的只是添加行和列的索引,然后比较它们:

(l+k) != (i+j))

完美无缺!