33
LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas BRABANT Benjamin PLAN 1

LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

Embed Size (px)

Citation preview

Page 1: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

1

LE SUDOKU PROJET PARCOURS GSI

BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée

Page 2: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

2 Objectifs et Organisation

Page 3: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

3

Objectifs

Réalisation d’une interface graphique permettant de jouer au Sudoku

Mise en place des algorithmes de génération et de résolution d’une grille

Ajout d’options en ligne de commandes pour générer et résoudre des fichiers de grilles

Pérennité des données sous forme de fichiers textes formatés

Page 4: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

4

Organisation

Jour 1 Analyse du problème, mise en place du modèle de

données et première ébauche d’interface graphique Jour 2

Finalisation de l’interface graphique, début de réflexion sur un algorithme de génération par famille

Jour 3 Mise en place des options en ligne de commandes et

implémentation de la première IA de résolution Jour 4

Finalisation de l’interface, implémentation d’un solveur optimisé et mise en place de divers tests

Page 5: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

5 Architecture

Page 6: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

6

Organisation des fichiers

|-- build : généré à la compilation -- classes : contient le bytecode java

|-- build.xml : fichier de génération ant |-- README.txt : fichier d’instructions |-- release : dossier des éléments de distribution

|-- jar : contient les archives jar |-- ressources : dossier des ressources externes

|-- files : dossier des fichiers de chargement Sudoku |-- images : images du projet

Page 7: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

7

Structure du modèle

Architecture MVC (Modèle Vue Contrôleur) et pattern Observer pour la relation Modèle-Vue

Classe centrale Sudoku contenant une instance de MoteurJeu contenant la grille de jeu accessible partout

Classe ModeleGrille subdivisée en ModeleZone et en ModeleCase

Classes SolveurClassique, SolveurOptimise et Generateur permettant une génération et résolution externe à ModeleGrille

Page 8: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

8

Diagramme de classe

Page 9: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

9IA - Génération et Résolution

Page 10: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

10

Solveur Classique (obsolète)

Construire la liste des valeurs possibles pour les cases vides (en ligne, colonne, zone)

FAIRE Choisir une case dont la cardinalité des valeurs possibles est

minimale Choisir/affecter une valeur parmi les valeurs possibles pour

la case Mettre à jour les valeurs possibles des autres cases vides,

enlever la valeur de cette case SI une intersection modifiée est devenue vide ALORS

Erreur -> retour au point de choix FIN SI

TANT QUE il reste encore une case vide

Page 11: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

11

Solveur Optimisé

Algorithme première partie : Restriction des valeurs possibles par lignes

colonnes et zones, Pour chaque case vide, s’il n’y a qu’une seule

valeur possible, on lui affecte cette valeur, Première vérification: pour chaque cases, si la

case est vide n’a pas de valeur possible, ou si la case n’est pas vide et sa valeur n’est pas parmi les valeurs possibles, la grille actuelle n’est pas possible

Page 12: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

12

Solveur Optimisé

Algorithme deuxième partie :

Pour chaque case vide, si une des possibilités de la case est unique sur la ligne, la colonne et la zone, on affecte cette valeur à la case.

Page 13: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

13

Solveur Optimisé

Algorithme troisième partie : Si la grille est bloquée, on prend une case qui

possède le moins de valeurs possibles, on choisit une valeur et on essaie de finir la grille avec cette valeur. Si on arrive à une contradiction on revient en arrière et on prend une autre valeur possible.

On répète ces opérations jusqu’à la résolution de la grille, ou de son impossibilité

Page 14: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

14

Solveur Optimisé

En résumé : Utilise la notion d’arbre, Rapidité due à l’utilisation d’un tableau

statique à deux dimensions de vecteurs d’entiers

Permet d’accéder à tout moment aux valeurs possibles pour une case donnée de la grille.

Page 15: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

15

Génération par famille (obsolète)

Sélection Pivot

Famille valide

Ajout Compatible

Détection de boucle infinie

Page 16: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

16

Génération

Génération Aléatoire

Gestion de ModeleGrille résolue

Suppression de valeurs

Page 17: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

17

Performances finales

Résolution : 250 ms Résolution + Création : 360 ms Programme : 740 ms Résolution sûre

AI Escargot : 55 ms

Blanc Nicolas – Brabant Benjamin – Planté Timothée

Page 18: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

18 Pérennité et Ligne de Commandes

Blanc Nicolas – Brabant Benjamin – Planté Timothée

Page 19: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

19

Pérennité des données

Stockage des grilles sous forme de fichiers texte contenant une succession de ligne de la forme :

<d> <d> <d> <d> <d> <d> <d> <d> <d> Avec <d> un entier entre 0 et 9

Possibilité de lecture d’un fichier contenant une succession de grilles et détection des grilles erronées

Assouplissement des contraintes au niveau des espacements des caractères et des caractères de fin de ligne

Gestion des erreurs liées à la lecture et l’écriture de données sur disque.

Page 20: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

20

Ligne de commande

Gestion d’options par ligne de commande Aucune option saisie : lancement interface graphique -rc <fichier_entree> : résolution classique des grilles

valides de fichier_entree et affichage console -ro <fichier_entree> : résolution optimisée des grilles

valides de fichier_entree et affichage console -g : génération d’une grille et affichage console -g <nb> : génération de nb grilles et affichage

console Possibilité de rediriger la sortie console vers un

fichier texte contenant les grilles générées ou résolues : -f <fichier_sortie> : écriture des résultats dans

fichier_sortie et désactivation de l’affichage console

Page 21: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

21

« C’est un jeu. Ce fût des larmes, de la sueur et du développement ! »

Aperçu du programme

Page 22: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

22 Interface graphique

Page 23: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

23

Menu Principal

Au lancement de l’application (sans saisie d’options) , affichage du menu principal laissant les choix : Nouvelle partie Charger partie Quitter

Page 24: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

24

Nouvelle Partie – Charger Partie

Page 25: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

25

Valeurs Identiques

En cliquant une valeur initiale (et non modifiable) de la grille, affichage en surbrillance verte de toutes les valeurs identiques de la grille

Page 26: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

26

Famille de valeurs

En cliquant une valeur modifiable de la grille, en plus, affichage en surbrillance rouge de toutes les valeurs non nulles de la ligne, colonne et zone de la case sélectionnée

Page 27: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

27

Résolution

Le clic sur le bouton résoudre remplace les valeurs modifiables de la grille quelquesoit celles saisies par l’utilisateur.

L’icône « validée » permet de bien constater que la grille est juste

Page 28: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

28 Commandes Shell

Page 29: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

29

Résolution classique

Page 30: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

30

Résolution optimisée

Page 31: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

31

Génération

Page 32: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

32 Conclusion

Une architecture MVC respectée au maximum Une génération et résolution par lecture de fichier en ligne de commande robuste Une IA optimale résolvant tout type de grille en un temps inférieur à la seconde Un modèle complet mais peu optimisé pour les calculs

Page 33: LE SUDOKU PROJET PARCOURS GSI BLANC Nicolas – BRABANT Benjamin – PLANTE Timothée 1

33

LE SUDOKU PROJET PARCOURS GSI

Blanc Nicolas – Brabant Benjamin – Planté Timothée

Questions ?