Auto
This commit is contained in:
parent
8bee2d784a
commit
2b006f67f4
9
Grilles/Grille3-fausse
Normal file
9
Grilles/Grille3-fausse
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
062506090
|
||||||
|
100029000
|
||||||
|
059008602
|
||||||
|
047190300
|
||||||
|
906302104
|
||||||
|
001087920
|
||||||
|
604800510
|
||||||
|
000940007
|
||||||
|
090001480
|
Binary file not shown.
@ -42,10 +42,73 @@ public class SudokuGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isGridValid(grid)) {
|
||||||
|
JOptionPane.showMessageDialog(null, "Invalid Sudoku grid. Loading default grid.");
|
||||||
|
return generateGrid(); // Charger la grille par défaut en cas de grille invalide
|
||||||
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return grid;
|
return grid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Méthode pour vérifier si la grille est valide
|
||||||
|
private static boolean isGridValid(int[][] grid) {
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
if (!isRowValid(grid, i) || !isColumnValid(grid, i) || !isRegionValid(grid, i)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour vérifier s'il n'y a pas de chiffres en double sur une ligne donnée
|
||||||
|
private static boolean isRowValid(int[][] grid, int row) {
|
||||||
|
boolean[] seen = new boolean[10]; // Tableau pour suivre les chiffres déjà rencontrés
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
int num = grid[row][i];
|
||||||
|
if (num != 0) {
|
||||||
|
if (seen[num]) {
|
||||||
|
return false; // Le chiffre est déjà apparu sur cette ligne
|
||||||
|
}
|
||||||
|
seen[num] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true; // Aucun chiffre en double sur la ligne
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour vérifier s'il n'y a pas de chiffres en double sur une colonne donnée
|
||||||
|
private static boolean isColumnValid(int[][] grid, int col) {
|
||||||
|
boolean[] seen = new boolean[10]; // Tableau pour suivre les chiffres déjà rencontrés
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
int num = grid[i][col];
|
||||||
|
if (num != 0) {
|
||||||
|
if (seen[num]) {
|
||||||
|
return false; // Le chiffre est déjà apparu sur cette colonne
|
||||||
|
}
|
||||||
|
seen[num] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true; // Aucun chiffre en double sur la colonne
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour vérifier s'il n'y a pas de chiffres en double dans une région donnée
|
||||||
|
private static boolean isRegionValid(int[][] grid, int region) {
|
||||||
|
int rowOffset = (region / 3) * 3;
|
||||||
|
int colOffset = (region % 3) * 3;
|
||||||
|
boolean[] seen = new boolean[10]; // Tableau pour suivre les chiffres déjà rencontrés
|
||||||
|
for (int i = rowOffset; i < rowOffset + 3; i++) {
|
||||||
|
for (int j = colOffset; j < colOffset + 3; j++) {
|
||||||
|
int num = grid[i][j];
|
||||||
|
if (num != 0) {
|
||||||
|
if (seen[num]) {
|
||||||
|
return false; // Le chiffre est déjà apparu dans cette région
|
||||||
|
}
|
||||||
|
seen[num] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true; // Aucun chiffre en double dans la région
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user