gpt4 book ai didi

java - 数独 - 区域测试

转载 作者:行者123 更新时间:2023-12-02 08:13:57 25 4
gpt4 key购买 nike

我正在使用“强力”随机方法创建一个数独生成器。我已经能够使用以下代码检查 x/y 轴是否有重复数字:

for(l=0; l<9; l++){//Makes all vertical work.
if(sudoku[l][j] == temp){
isUsed=true;
}
}
for(m=0; m<9; m++){//makes all horizontal work
if(sudoku[i][m] == temp){
isUsed=true;
}
}

我决定实现“框”或“区域”检查(从原点检查每个 3x3 方 block ),但我似乎无法理解代码。这是我到目前为止所做的。我只是不太清楚我的逻辑错误在哪里(为了记录,程序将使用此代码运行,但不会正确检查区域)

rowbase = i-(i%3);
if(i==2 || i==5 || i==8 ){
if(rowbase == 0 || rowbase == 3 || rowbase == 6){
isUsed= RegionCheck.RegCheck(rowbase, sudoku);
}
}

regionCheck.java的内容:

       boolean okay = false;
int[] regionUsed = new int[9];
int i=0, j=0, regionTester=0, counter=0, numcount;
for (i=regionTester; i<regionTester+3; i++){
for (; j<3; j++){
regionUsed[counter]=sudoku[i][j];
counter++;
}
}
for(i=0; i<9; i++){
numcount=regionUsed[i];
for(j=0; j<9; j++){
if(j==i){
//null
}
else if(numcount == regionUsed[j]){
okay=false;
}
}
}

return okay;

在这个过程中,我只是迷路了,不明白如何“选择”一个区域并迭代区域。

完整来源:http://ideone.com/FYLwm

任何关于如何“选择”一个区域进行测试然后迭代它的帮助将不胜感激,因为我真的没有想法。

最佳答案

你需要稍微抽象一下。这样想,任何区域(框、列、行)都只是值(和空值)的列表。要检查值 x 是否可以插入到区域 R 中,只需将 R 中的所有值表示为值列表 L 。现在您需要做的就是检查 L 是否包含 x

祝你好运!

关于java - 数独 - 区域测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6800164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com