Ich habe ein Programm in Java, die überprüfen, ob ein Sudoku gültig ist oder nicht, ich habe zwei Methoden, die erste ist die Summe aller Spalten, Untergitter, Zeilen und sagen, ob 45 ist, und die Zweitens ist zu prüfen, ob die Summe aller Sudoku 405 ist oder nicht, wenn ja, also ist das Sudoku gültig, also suche ich nach einem Gegenbeispiel, dass ich in der Eingabe ein gültiges Sudoku habe, aber das Programm sagt, das ist nicht gültig, also dies ist der Code:Sudoku Lösung Checker
public class test_checker {
static final boolean valide=true;
static final boolean non_valide=false;
// verify every sub-grid if it is valid
static boolean check_subgrid(int a[][],int ei,int ej){
int sum=0;
for(int i=ei;i<ei+3;i++){
for(int j=ej;j<ej+3;j++){
sum=sum+a[j][i];
}
}
if(sum!=45) return non_valide;
else return valide;
}
//verify a sudoku by sum of every row & column & sub-grid
static boolean Checker1(int a[][]){
int sum=0;
//check row
for(int i=0;i<9;i++){
sum=0;
for(int j=0;j<9;j++){
sum=sum+a[i][j];
}
if(sum!=45) return non_valide;
}
//check column
for(int i=0;i<9;i++){
sum=0;
for(int j=0;j<9;j++){
sum=sum+a[j][i];
}
if(sum!=45) return non_valide;
}
//check sub-grid
for(int i=0;i<9;i=i+3){
for(int j=0;j<3;j=j+3){
if(check_subgrid(a,i,j)==non_valide) return non_valide;
}
}
return valide;
}
//verify by sum of all sudoku
static boolean Checker2(int a[][]){
int sum=0;
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
sum=sum+a[i][j];
}
}
if(sum!=405) return non_valide;
else return valide;
}
public static void main(String[] args) {
int [][] sudoku =
{
{1,2,3,4,5,6,7,8,9},
{4,5,6,7,8,9,1,2,3},
{7,8,9,1,2,3,4,5,6},
{3,1,2,9,7,8,6,4,5},
{6,4,5,3,1,2,9,7,8},
{9,7,8,6,4,5,3,1,2},
{2,3,1,5,6,4,8,9,7},
{5,6,4,8,9,7,2,3,1},
{8,9,7,2,3,1,5,6,4}
};
if(Checker1(sudoku)) System.out.println("it's valide (checker1)!");
else System.out.println("it's not valide !");
if(Checker2(sudoku)) System.out.println("it's valide (checker2) !");
else System.out.println("it's not valide !");
}
}
Sie nicht die Summe der Zahlen überprüfen sollen, weil es falsch positive Ergebnisse haben kann (wiederholte Zahlen, die auch 45 addiert). Sie sollten überprüfen, ob sich die Zahlen nicht wiederholen. –
Ist diese Frage für http://codereview.stackexchange.com besser geeignet? – Paul
Natürlich gibt es kein gültiges 9x9 Sudoku, das Ihren Kriterien nicht entspricht. Es folgt direkt aus der Definition eines gültigen Sudokus. Die Frage, die Sie * fragen sollten, ist, ob es ein *** ungültiges *** 9 mal 9 Gitter gibt, das *** *** *** *** Ihren Kriterien entspricht. –