Auto
This commit is contained in:
parent
bbdbc5b72d
commit
826ae77bc7
BIN
Main$1.class
Normal file
BIN
Main$1.class
Normal file
Binary file not shown.
BIN
Main.class
BIN
Main.class
Binary file not shown.
16
Main.java
16
Main.java
@ -1,5 +1,8 @@
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
@ -27,6 +30,19 @@ public class Main {
|
|||||||
// Ajout de l'écouteur d'événements au bouton "Reset"
|
// Ajout de l'écouteur d'événements au bouton "Reset"
|
||||||
resetButton.addActionListener(new Reset(grid, enterPanel));
|
resetButton.addActionListener(new Reset(grid, enterPanel));
|
||||||
|
|
||||||
|
// Ajout de l'écouteur d'événements au bouton "Solve"
|
||||||
|
solveButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (Resolve.solveSudoku(grid)) {
|
||||||
|
enterPanel.repaint(); // Redessiner la grille après la résolution
|
||||||
|
JOptionPane.showMessageDialog(frame, "Grille résolue avec succès !");
|
||||||
|
} else {
|
||||||
|
JOptionPane.showMessageDialog(frame, "Impossible de résoudre la grille.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
frame.pack();
|
frame.pack();
|
||||||
frame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran
|
frame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran
|
||||||
frame.setVisible(true);
|
frame.setVisible(true);
|
||||||
|
BIN
Resolve.class
Normal file
BIN
Resolve.class
Normal file
Binary file not shown.
74
Resolve.java
Normal file
74
Resolve.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
public class Resolve {
|
||||||
|
public static boolean solveSudoku(int[][] grid) {
|
||||||
|
int row = -1;
|
||||||
|
int col = -1;
|
||||||
|
boolean isEmpty = true;
|
||||||
|
|
||||||
|
// Recherche d'une cellule vide dans la grille
|
||||||
|
for (int i = 0; i < grid.length; i++) {
|
||||||
|
for (int j = 0; j < grid[i].length; j++) {
|
||||||
|
if (grid[i][j] == 0) {
|
||||||
|
row = i;
|
||||||
|
col = j;
|
||||||
|
// Cellule vide trouvée
|
||||||
|
isEmpty = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isEmpty) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si la grille est pleine, le sudoku est résolu
|
||||||
|
if (isEmpty) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Essayer de placer les chiffres de 1 à 9 dans la cellule vide
|
||||||
|
for (int num = 1; num <= 9; num++) {
|
||||||
|
if (isValidMove(grid, row, col, num)) {
|
||||||
|
grid[row][col] = num;
|
||||||
|
// Résoudre récursivement le sudoku
|
||||||
|
if (solveSudoku(grid)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Annuler la valeur si la solution n'est pas possible
|
||||||
|
grid[row][col] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Aucune solution n'est possible pour cette cellule
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifie si un nombre peut être placé dans une cellule spécifique
|
||||||
|
private static boolean isValidMove(int[][] grid, int row, int col, int num) {
|
||||||
|
// Vérifie la ligne
|
||||||
|
for (int x = 0; x < 9; x++) {
|
||||||
|
if (grid[row][x] == num) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifie la colonne
|
||||||
|
for (int y = 0; y < 9; y++) {
|
||||||
|
if (grid[y][col] == num) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifie la région 3x3
|
||||||
|
int regionRowStart = row - row % 3;
|
||||||
|
int regionColStart = col - col % 3;
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
for (int j = 0; j < 3; j++) {
|
||||||
|
if (grid[i + regionRowStart][j + regionColStart] == num) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// La valeur peut être placée dans cette cellule
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user