Ajout de README.md
94
README.md
|
@ -1,42 +1,66 @@
|
|||
# *sudoSolv*
|
||||
# *sudoSolver*
|
||||
|
||||
Un petit utilitaire en C++ pour Graph 90+E pour créer, éditer des grilles de Sudoku puis leur trouver une solution.
|
||||
### Présentation
|
||||
![Accueil](assets/accueil.png)
|
||||
|
||||
Cette première version ne contient que l'objet central, sans GUI et permet de valider les différentes méthodes de la classe.
|
||||
En séquence :
|
||||
`sudoSolver` est un *addin* pour Graph 90+E ecrit en C++ pour créer, éditer des grilles de Sudoku puis leur trouver une solution.
|
||||
|
||||
* *load()* - Ouverture du fichier "\\fls0\\GRIDS\\1.txt". S'il n'existe pas le système partira avec une grille vide;
|
||||
* *display()* - Affichage
|
||||
* *edit()* - Edition de la grille. Un appui sur "EXE" sort du mode;
|
||||
* *findObviousValues()* - Recherche des valeurs triviales (obvious values) : ie. les valeurs évidentes; Elles sont affichées en bleu
|
||||
* *resolve()* - Recherche d'une solution
|
||||
L'application est organisée autour d'une barre de menu horizontale; la navigation s'effectuant en appuyant sur les touches de contrôle situées "sous" les items.
|
||||
* *File* permet d'accéder au sous-menu de gestion des fichiers
|
||||
* *Edit* permet de modifier une grille
|
||||
* *Solve* donne accès aufonction de recherche des solutions
|
||||
* *Quit* sort de l'application
|
||||
|
||||
```c
|
||||
#define GRID_FILE u"\\\\fls0\\GRIDS\\1.txt"
|
||||
### Informations de version
|
||||
|
||||
dclear(C_WHITE);
|
||||
|
||||
sudoku myGame;
|
||||
| Dépôt | https://gitea.planet-casio.com/Jhb/sudoSolv |
|
||||
|----- |-------------------------------------|
|
||||
| **Date** | 17 janvier 2024 |
|
||||
| **Version stable** | **0\.1.18** - branche `master` |
|
||||
|
||||
if (myGame.load((FONTCHARACTER)GRID_FILE)){
|
||||
myGame.display();
|
||||
|
||||
myGame.edit();
|
||||
|
||||
// Any obvious value(s) ?
|
||||
if (myGame.findObviousValues()){
|
||||
myGame.display();
|
||||
getkey();
|
||||
}
|
||||
|
||||
// A solution ?
|
||||
if (myGame.resolve()){
|
||||
// yes !!!
|
||||
myGame.display();
|
||||
getkey();
|
||||
}
|
||||
}
|
||||
```
|
||||
### Gestion des fichiers
|
||||
Le menu *File* permet de gérer les grilles de sodoku : création d'une nouvelle grillen navigation dans le dossier, sauvegarde, suppression.
|
||||
|
||||
Le dossier `GRIDS` contient différentes grilles.
|
||||
Une grille fait exactement 162 octets.
|
||||
Les grilles sont toutes enregistrées et chargées à partir du dossier `fls0\grids`. Si le dossier n'existe pas, il sera crée au lancement de l'application.
|
||||
|
||||
Le sous-dossier `grids` dans le dépôts propose quelques grilles.
|
||||
|
||||
Dans ce dossier, chaque grille est enregistrée dans un fichier au format texte dont le nom est automatiquement incrémenté.
|
||||
|
||||
Le menu propose les options suivantes:
|
||||
* *New* : Création d'une nouvelle grille
|
||||
* *Prev* : Chargement du fichier précédent dans le dossier
|
||||
* *Next* : Ouverture du fichier suivant
|
||||
* *Save* : Sauvegarde du fichier modifié
|
||||
* *Delete* : Suppression du fichier courant
|
||||
* *back* : retour un menu principal
|
||||
|
||||
![Browse](assets/browse.png)
|
||||
|
||||
|
||||
### Modification d'un grille
|
||||
Le menu *Edit* permet de modifier une grille existante ou de générer une nouvelle grille à partir d'une matrice vierge.
|
||||
|
||||
Les touches
|
||||
Il suffit d'appueyer sur une touche pour mettre la valeur à la position cournate; si cela est possible en l'étât.
|
||||
|
||||
![Edit](assets/edit.png)
|
||||
|
||||
### Résolution
|
||||
Enfin le menu *Solve* donne accès aux fonctions de recherche des valeurs évidentes (obvious values) ou d'une solution complête.
|
||||
|
||||
*Obvious* recherche les valeurs évidentes pour la grille. Il s'agit des valeurs que l'on peut mettre sans effectuer aucune hypothèse.
|
||||
|
||||
Ces valeurs sont affichées en bleu dans la grille.
|
||||
|
||||
La résolution est bien plus rapide lorsque l'on a recherché les valeurs évidentes au préalable.
|
||||
|
||||
![Solver](assets/obvious.png)
|
||||
|
||||
*Resolve* recherche une solution pour la grille courante.
|
||||
|
||||
![Found](assets/solved2.png)
|
||||
|
||||
*Revert* retire les éléments trouvés et retourne à la grille d'origine.
|
||||
|
||||
*back* permet de revenir au menu principal.
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
assets/edit.png
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 3.3 KiB |