Auto
This commit is contained in:
parent
375a4dacbd
commit
720c2d168e
@ -1,27 +0,0 @@
|
|||||||
import java.io.*;
|
|
||||||
|
|
||||||
public class OuvertureFichier {
|
|
||||||
public static int[][] lireFichier(File fichier) {
|
|
||||||
int[][] grille = new int[9][9];
|
|
||||||
try (BufferedReader br = new BufferedReader(new FileReader(fichier))) {
|
|
||||||
String ligne;
|
|
||||||
int i = 0;
|
|
||||||
while ((ligne = br.readLine()) != null && i < 9) {
|
|
||||||
for (int j = 0; j < Math.min(ligne.length(), 9); j++) {
|
|
||||||
char caractere = ligne.charAt(j);
|
|
||||||
if (caractere != ' ') {
|
|
||||||
// Convertir chaque caractère en valeur numérique
|
|
||||||
int valeur = Integer.parseInt(String.valueOf(caractere), 16);
|
|
||||||
grille[i][j] = valeur;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return grille;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,114 +0,0 @@
|
|||||||
import javax.swing.*;
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
public class SudokuGenerator {
|
|
||||||
public static int[][] generateGrid() {
|
|
||||||
// grille par défaut
|
|
||||||
int[][] grid = {
|
|
||||||
{0, 0, 0, 9, 0, 5, 0, 0, 4},
|
|
||||||
{5, 0, 3, 0, 0, 4, 0, 8, 7},
|
|
||||||
{0, 0, 0, 7, 0, 0, 6, 0, 3},
|
|
||||||
{9, 0, 0, 0, 3, 4, 0, 8, 0},
|
|
||||||
{0, 4, 0, 0, 1, 0, 0, 7, 0},
|
|
||||||
{0, 2, 0, 5, 7, 0, 0, 0, 6},
|
|
||||||
{4, 0, 9, 0, 0, 2, 0, 0, 0},
|
|
||||||
{6, 0, 7, 9, 0, 3, 0, 2, 1},
|
|
||||||
{2, 0, 0, 6, 5, 0, 0, 0, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
return grid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int[][] readGridFromFile() {
|
|
||||||
int[][] grid = new int[9][9];
|
|
||||||
JFileChooser fileChooser = new JFileChooser();
|
|
||||||
int result = fileChooser.showOpenDialog(null);
|
|
||||||
if (result == JFileChooser.APPROVE_OPTION) {
|
|
||||||
File selectedFile = fileChooser.getSelectedFile();
|
|
||||||
try (BufferedReader reader = new BufferedReader(new FileReader(selectedFile))) {
|
|
||||||
for (int i = 0; i < 9; i++) {
|
|
||||||
String line = reader.readLine();
|
|
||||||
// Vérifier la longueur de la ligne lue
|
|
||||||
if (line.length() != 9) {
|
|
||||||
JOptionPane.showMessageDialog(null, "Invalid file format. Please select a file with correct Sudoku grid format.");
|
|
||||||
return generateGrid(); // Charger la grille par défaut en cas d'erreur
|
|
||||||
}
|
|
||||||
for (int j = 0; j < 9; j++) {
|
|
||||||
char ch = line.charAt(j);
|
|
||||||
if (ch >= '1' && ch <= '9') {
|
|
||||||
grid[i][j] = Character.getNumericValue(ch);
|
|
||||||
} else {
|
|
||||||
grid[i][j] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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