diff --git a/src/OuvertureFichier.java b/src/OuvertureFichier.java deleted file mode 100644 index 7da196c..0000000 --- a/src/OuvertureFichier.java +++ /dev/null @@ -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; -} - - -} diff --git a/src/SudokuGenerator.java b/src/SudokuGenerator.java deleted file mode 100644 index 6ffa151..0000000 --- a/src/SudokuGenerator.java +++ /dev/null @@ -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 - } -}