Provides essential functionalities for generating and solving Sudoku puzzles.
More...
|
void | cacherLesCases (int nombreDeCasesACacher, final int[] grilleAResoudre) |
| Cache un nombre spécifié de cases dans la grille à résoudre en les remplaçant par zéro.
|
|
int | choisirValeurAleatoire (final int possibilitesDeLaCase) |
| Choisit une valeur aléatoire parmi les possibilités données.
|
|
long | dureeEnMs () |
| Calcule la durée de temps écoulé entre la dernière et la nouvelle demande de grille en millisecondes.
|
|
int | genererLaGrilleAResoudre (final int niveau, final int[] grilleResolue, final int[] grilleAResoudre) |
| Génère une grille de Sudoku à résoudre en masquant des cases selon le niveau de difficulté.
|
|
int | getPossibilitesGrilleAresoudreDifficile (int[] grilleResolue, int[] grilleAResoudre) |
| Génère une grille de Sudoku de niveau difficile (sinon une grille par défaut est retournée après une seconde).
|
|
int | getPossibilitesGrilleAResoudreFacile (int[] grilleResolue, int[] grilleAResoudre) |
| Génère une grille de Sudoku de niveau facile (sinon une grille par défaut est retournée après une seconde).
|
|
int | getPossibilitesGrilleAResoudreMoyenne (int[] grilleResolue, int[] grilleAResoudre) |
| Génère une grille de Sudoku de niveau moyen (sinon une grille par défaut est retournée après une seconde).
|
|
int | getPossibilitesGrilleWhileNok (int[] grilleResolue, int[] grilleAResoudre, int nombreDeCasesACacher) |
| Masque des cases dans la grille et calcule la somme des possibilités restantes.
|
|
int | nombreAleatoire (final int minInclus, final int maxExclus) |
| Génère un nombre entier aléatoire dans un intervalle spécifié.
|
|
boolean | remplirLaGrille (final int[] grille, final int[] possibilites) |
| Remplit récursivement la grille Sudoku (backtracking).
|
|
|
static int | compterBits (final int x) |
| Compte le nombre de bits à 1 dans un entier.
|
|
static void | eliminerPossibilite (final int[] possibilites, final int ligne, final int colonne, final int valeur) |
| Élimine la valeur des possibilités des cases alentours.
|
|
static int[] | getPossibilites (final int[] grille) |
| Calcule les possibilités pour chaque case de la grille de Sudoku.
|
|
static void | initialiserPossibilites (final int[] grille, final int[] possibilites) |
| Initialise le tableau des possibilités pour chaque case.
|
|
static int | laCaseVideAvecLeMoinsDePossibilites (final int[] grille, final int[] possibilites) |
| Trouve la case vide avec le moins de possibilités.
|
|
static int | sommeDesPossibilitesDeLaGrille (final int[] possibilites) |
| Calcule la somme des possibilités de toutes les cases de la grille de Sudoku.
|
|
static int | verifierLaCoherenceEntreLaGrilleEtLesPossibilites (final int[] grille, final int[] possibilites) |
| Vérifie la cohérence entre la grille et les possibilités.
|
|
Provides essential functionalities for generating and solving Sudoku puzzles.
◆ GridMaster()
Générateur de grilles de Sudoku.
◆ cacherLesCases()
void fr.softsf.sudokufx.utils.sudoku.GridMaster.cacherLesCases |
( |
int | nombreDeCasesACacher, |
|
|
final int[] | grilleAResoudre ) |
|
private |
Cache un nombre spécifié de cases dans la grille à résoudre en les remplaçant par zéro.
- Parameters
-
nombreDeCasesACacher | Le nombre de cases à cacher dans la grille (au maximum 81 cases). |
grilleAResoudre | Le tableau représentant la grille à résoudre, où les cases seront cachées. |
◆ choisirValeurAleatoire()
int fr.softsf.sudokufx.utils.sudoku.GridMaster.choisirValeurAleatoire |
( |
final int | possibilitesDeLaCase | ) |
|
|
private |
Choisit une valeur aléatoire parmi les possibilités données.
- Parameters
-
possibilitesDeLaCase | Entier représentant les valeurs possibles. |
- Returns
- Une valeur choisie aléatoirement.
◆ compterBits()
static int fr.softsf.sudokufx.utils.sudoku.GridMaster.compterBits |
( |
final int | x | ) |
|
|
staticprivate |
Compte le nombre de bits à 1 dans un entier.
- Parameters
-
- Returns
- Le nombre de bits à 1.
◆ creerLesGrilles()
final int[][] fr.softsf.sudokufx.utils.sudoku.GridMaster.creerLesGrilles |
( |
final int | niveau | ) |
|
Crée les grilles de Sudoku (résolue et à résoudre) en fonction du niveau de difficulté.
Facile : 35-45 cases cachées, possibilités théoriques de 0 à 13797, et pratique de 4800 à 16533 Moyen : 45-39 cases cachées, possibilités théoriques de 13797 à 27594, et pratique de 16533 à 28266 Difficile : 49 à 59 cases cachées, possibilités théoriques de 27594 à 41391, et pratique de 28266 à 40000
- Parameters
-
niveau | Le niveau de difficulté (1 : facile, 2 : moyen, 3 : difficile). |
- Returns
- Un tableau à trois dimensions contenant : La grille résolue. La grille à résoudre avec les cases cachées. Le pourcentage de possibilités de la grille à résoudre (la plage retenue va de 4800 0% à 40000 100%).
Implements fr.softsf.sudokufx.interfaces.IGridMaster.
◆ dureeEnMs()
long fr.softsf.sudokufx.utils.sudoku.GridMaster.dureeEnMs |
( |
| ) |
|
|
private |
Calcule la durée de temps écoulé entre la dernière et la nouvelle demande de grille en millisecondes.
- Returns
- Durée en millisecondes
◆ eliminerPossibilite()
static void fr.softsf.sudokufx.utils.sudoku.GridMaster.eliminerPossibilite |
( |
final int[] | possibilites, |
|
|
final int | ligne, |
|
|
final int | colonne, |
|
|
final int | valeur ) |
|
staticprivate |
Élimine la valeur des possibilités des cases alentours.
- Parameters
-
possibilites | Tableau des possibilités. |
ligne | Ligne de la case. |
colonne | Colonne de la case. |
valeur | Valeur à éliminer. |
◆ genererLaGrilleAResoudre()
int fr.softsf.sudokufx.utils.sudoku.GridMaster.genererLaGrilleAResoudre |
( |
final int | niveau, |
|
|
final int[] | grilleResolue, |
|
|
final int[] | grilleAResoudre ) |
|
private |
Génère une grille de Sudoku à résoudre en masquant des cases selon le niveau de difficulté.
La stratégie de génération ajuste le nombre de cases masquées en fonction du temps écoulé depuis la dernière génération. Si une nouvelle grille est demandée très rapidement (moins de 500ms), le nombre de cases masquées est intentionnellement ajusté pour standardiser la grille.
- Parameters
-
niveau | Le niveau de difficulté : 1 (et autres valeurs) : facile, 2 : moyen, 3 : difficile). |
grilleResolue | La grille résolue à partir de laquelle les cases seront cachées. |
grilleAResoudre | La grille à résoudre, avec ses cases masquées à 0. IMPORTANT : Ce tableau est modifié directement par la fonction. |
- Returns
- La somme du nombre de possibilités pour chaque case non résolue dans la grille à résoudre. @implNote La méthode utilise une approche itérative pour masquer des cases et évaluer les possibilités de la grille résultante jusqu'à ce qu'elle corresponde au niveau de difficulté souhaité. Elle met également à jour l'horodatage interne derniereDemande.
◆ getPossibilites()
static int[] fr.softsf.sudokufx.utils.sudoku.GridMaster.getPossibilites |
( |
final int[] | grille | ) |
|
|
staticprivate |
Calcule les possibilités pour chaque case de la grille de Sudoku.
- Parameters
-
grille | La grille de Sudoku actuelle. |
- Returns
- Tableau des possibilités par case (511 = toutes possibilités).
◆ getPossibilitesGrilleAresoudreDifficile()
int fr.softsf.sudokufx.utils.sudoku.GridMaster.getPossibilitesGrilleAresoudreDifficile |
( |
int[] | grilleResolue, |
|
|
int[] | grilleAResoudre ) |
|
private |
Génère une grille de Sudoku de niveau difficile (sinon une grille par défaut est retournée après une seconde).
- Parameters
-
grilleResolue | La grille résolue à partir de laquelle les cases seront cachées. |
grilleAResoudre | La grille à résoudre, avec ses cases cachées (valeur à zéro). |
- Returns
- La somme des possibilités dans la grille à résoudre (somme des possibilités restantes).
◆ getPossibilitesGrilleAResoudreFacile()
int fr.softsf.sudokufx.utils.sudoku.GridMaster.getPossibilitesGrilleAResoudreFacile |
( |
int[] | grilleResolue, |
|
|
int[] | grilleAResoudre ) |
|
private |
Génère une grille de Sudoku de niveau facile (sinon une grille par défaut est retournée après une seconde).
- Parameters
-
grilleResolue | La grille résolue à partir de laquelle les cases seront cachées. |
grilleAResoudre | La grille à résoudre, avec ses cases cachées (valeur à zéro). |
- Returns
- La somme des possibilités dans la grille à résoudre (somme des possibilités restantes).
◆ getPossibilitesGrilleAResoudreMoyenne()
int fr.softsf.sudokufx.utils.sudoku.GridMaster.getPossibilitesGrilleAResoudreMoyenne |
( |
int[] | grilleResolue, |
|
|
int[] | grilleAResoudre ) |
|
private |
Génère une grille de Sudoku de niveau moyen (sinon une grille par défaut est retournée après une seconde).
- Parameters
-
grilleResolue | La grille résolue à partir de laquelle les cases seront cachées. |
grilleAResoudre | La grille à résoudre, avec ses cases cachées (valeur à zéro). |
- Returns
- La somme des possibilités dans la grille à résoudre (somme des possibilités restantes).
◆ getPossibilitesGrilleWhileNok()
int fr.softsf.sudokufx.utils.sudoku.GridMaster.getPossibilitesGrilleWhileNok |
( |
int[] | grilleResolue, |
|
|
int[] | grilleAResoudre, |
|
|
int | nombreDeCasesACacher ) |
|
private |
Masque des cases dans la grille et calcule la somme des possibilités restantes.
Copie la grille résolue, masque un nombre de cases spécifié, puis calcule la somme des possibilités pour la grille à résoudre.
- Parameters
-
grilleResolue | La grille de Sudoku résolue (source). |
grilleAResoudre | La grille de Sudoku à résoudre (destination), MODIFIÉE par la méthode. |
nombreDeCasesACacher | Nombre de cases à masquer. |
- Returns
- La somme des possibilités après masquage des cases. @implNote Méthode utilisée dans une boucle pour ajuster la difficulté de la grille en fonction des possibilités.
◆ initialiserPossibilites()
static void fr.softsf.sudokufx.utils.sudoku.GridMaster.initialiserPossibilites |
( |
final int[] | grille, |
|
|
final int[] | possibilites ) |
|
staticprivate |
Initialise le tableau des possibilités pour chaque case.
- Parameters
-
grille | Grille Sudoku actuelle. |
possibilites | Tableau à initialiser avec les possibilités. |
◆ laCaseVideAvecLeMoinsDePossibilites()
static int fr.softsf.sudokufx.utils.sudoku.GridMaster.laCaseVideAvecLeMoinsDePossibilites |
( |
final int[] | grille, |
|
|
final int[] | possibilites ) |
|
staticprivate |
Trouve la case vide avec le moins de possibilités.
- Parameters
-
grille | Grille Sudoku actuelle. |
possibilites | Tableau des possibilités. |
- Returns
- L'index de la case trouvée, ou -1 si la grille est complète.
◆ nombreAleatoire()
int fr.softsf.sudokufx.utils.sudoku.GridMaster.nombreAleatoire |
( |
final int | minInclus, |
|
|
final int | maxExclus ) |
|
private |
Génère un nombre entier aléatoire dans un intervalle spécifié.
- Parameters
-
minInclus | La valeur minimale incluse du nombre aléatoire à générer. |
maxExclus | La valeur maximale exclue du nombre aléatoire à générer. |
- Returns
- Un entier aléatoire compris entre minInclus (inclus) et maxExclus (exclus).
◆ remplirLaGrille()
boolean fr.softsf.sudokufx.utils.sudoku.GridMaster.remplirLaGrille |
( |
final int[] | grille, |
|
|
final int[] | possibilites ) |
|
private |
Remplit récursivement la grille Sudoku (backtracking).
- Parameters
-
grille | Grille Sudoku à remplir. |
possibilites | Tableau des possibilités pour chaque case. |
- Returns
- true si la grille est remplie avec succès, false sinon.
◆ resoudreLaGrille()
final int fr.softsf.sudokufx.utils.sudoku.GridMaster.resoudreLaGrille |
( |
final int[] | grille | ) |
|
Génère une grille de Sudoku complète à partir d'une grille vide ou partiellement remplie.
Processus :
- Initialise ou utilise une grille existante.
- Prépare les possibilités pour chaque case.
- Remplit récursivement la grille : Trouve la case avec le moins d'options. Teste chaque valeur possible. Met à jour les possibilités des cases alentours. Continue jusqu'à ce que la grille soit complète ou pas.
- Parameters
-
grille | Tableau représentant la grille de Sudoku initiale (peut être partiellement remplie). |
- Returns
- 0 si la grille est générée avec succès et cohérente, sinon -1.
Implements fr.softsf.sudokufx.interfaces.IGridMaster.
◆ setAverageImpossiblePossibilitiesForTests()
void fr.softsf.sudokufx.utils.sudoku.GridMaster.setAverageImpossiblePossibilitiesForTests |
( |
| ) |
|
|
package |
Définit une possibilité moyenne inaccessible, pour générer une grille par défaut après une seconde.
Cette méthode est uniquement utilisée pour les tests.
◆ setDifficultImpossiblePossibilitiesForTests()
void fr.softsf.sudokufx.utils.sudoku.GridMaster.setDifficultImpossiblePossibilitiesForTests |
( |
| ) |
|
|
package |
Définit une possibilité difficile inaccessible, pour générer une grille par défaut après une seconde.
Cette méthode est uniquement utilisée pour les tests.
◆ setEasyImpossiblePossibilitiesForTests()
void fr.softsf.sudokufx.utils.sudoku.GridMaster.setEasyImpossiblePossibilitiesForTests |
( |
| ) |
|
|
package |
Définit une possibilité facile inaccessible, pour générer une grille par défaut après une seconde.
Cette méthode est uniquement utilisée pour les tests.
◆ sommeDesPossibilitesDeLaGrille()
static int fr.softsf.sudokufx.utils.sudoku.GridMaster.sommeDesPossibilitesDeLaGrille |
( |
final int[] | possibilites | ) |
|
|
staticprivate |
Calcule la somme des possibilités de toutes les cases de la grille de Sudoku.
- Parameters
-
possibilites | Tableau des possibilités par case (511 = toutes possibilités). |
- Returns
- La somme des possibilités.
◆ verifierLaCoherenceEntreLaGrilleEtLesPossibilites()
static int fr.softsf.sudokufx.utils.sudoku.GridMaster.verifierLaCoherenceEntreLaGrilleEtLesPossibilites |
( |
final int[] | grille, |
|
|
final int[] | possibilites ) |
|
staticprivate |
Vérifie la cohérence entre la grille et les possibilités.
Cette méthode s'assure que chaque valeur non nulle dans la grille est bien présente dans les possibilités correspondantes.
- Parameters
-
grille | La grille Sudoku actuelle. |
possibilites | Le tableau des possibilités pour chaque case. |
- Returns
- 0 si la vérification est réussie, -1 si une incohérence est détectée.
◆ derniereDemande
LocalDateTime fr.softsf.sudokufx.utils.sudoku.GridMaster.derniereDemande = LocalDateTime.now() |
|
private |
◆ DIFFICILE_MAX_CACHEES
final int fr.softsf.sudokufx.utils.sudoku.GridMaster.DIFFICILE_MAX_CACHEES = 59 |
|
staticprivate |
◆ DIFFICILE_MOY_CACHEES
◆ DIMENSION
final int fr.softsf.sudokufx.utils.sudoku.GridMaster.DIMENSION = ORDRE * ORDRE |
|
staticprivate |
◆ FACILE_MIN_CACHEES
final int fr.softsf.sudokufx.utils.sudoku.GridMaster.FACILE_MIN_CACHEES = 35 |
|
staticprivate |
◆ FACILE_MOY_CACHEES
◆ MOYEN_MAX_CACHEES
final int fr.softsf.sudokufx.utils.sudoku.GridMaster.MOYEN_MAX_CACHEES = 50 |
|
staticprivate |
◆ MOYEN_MIN_CACHEES
final int fr.softsf.sudokufx.utils.sudoku.GridMaster.MOYEN_MIN_CACHEES = 45 |
|
staticprivate |
◆ MOYEN_MOY_CACHEES
◆ moyenMaxPossibilites
int fr.softsf.sudokufx.utils.sudoku.GridMaster.moyenMaxPossibilites = 28266 |
|
private |
◆ moyenMinPossibilites
int fr.softsf.sudokufx.utils.sudoku.GridMaster.moyenMinPossibilites = 16533 |
|
private |
◆ NOMBRE_CASES
◆ ORDRE
final int fr.softsf.sudokufx.utils.sudoku.GridMaster.ORDRE = 3 |
|
staticprivate |
◆ secureRandomGenerator
The documentation for this class was generated from the following file: