La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Résolution de grilles Slither Link

Présentations similaires


Présentation au sujet: "Résolution de grilles Slither Link"— Transcription de la présentation:

1 Résolution de grilles Slither Link

2 Sommaire Qu'est-ce qu'un slither-link ? Les contraintes
Analyse du projet Programmation Conclusion

3 Qu'est ce qu'un Slither Link ?
Casse-tête japonais Grille de points et de chiffres Allumer arêtes adjacentes aux chiffres Une seule et unique solution Un unique cycle d'arêtes

4 Les contraintes Représenter les données
Définir structures de donnée pour la résolution Programmer résolution Expérimenter différentes méthodes Trace graphique

5 Représentation des données
Fichier texte ex. : 7x7.txt « nbLignes »x « nbColonnes » « . » pour le degré neutre 0, 1, 2 ou 3 pour les autres degrés A l'exécution le fichier est appelé sans extension

6 Les contraintes Représenter les données
Définir structures de donnée pour la résolution Programmer résolution Expérimenter différentes méthodes Trace graphique

7 Structures de données pour la résolution du problème
Tableau statique de dimension 2 Chaque case contient une structure de données représentant un point, une arête ou une cellule Une pile (aide à la propagation)

8 Les contraintes Représenter les données
Définir structures de donnée pour la résolution Programmer résolution Expérimenter différentes méthodes Trace graphique

9 Programmation de la résolution
Utilisation du langage C Partage des codes avec le GitLab Compilation avec « gcc » et le débugeur « gdb »

10 Les contraintes Représenter les données
Définir structures de donnée pour la résolution Programmer résolution Expérimenter différentes méthodes Trace graphique

11 Différentes méthodes Problèmes de propagation des règles :
- parcours linéaire du tableau - propagation grâce à une pile - le Backtrack généralisé

12 Différentes méthodes Problèmes de propagation des règles :
- parcours linéaire du tableau - propagation grâce à une pile - le Backtrack généralisé

13 Les contraintes Représenter les données
Définir structures de donnée pour la résolution Programmer résolution Expérimenter différentes méthodes Trace graphique

14 Trace graphique Utilisation de « GDK » (GIMP drawing kit), sous bibliothèque de « GTK+ » Modes d'affichage : - Immédiat - Fluide - Pas-à-pas

15 Analyse du projet Représenter un slitherlink Règles de résolution
Recherches

16 Représentation Un tableau 2D Une structure pour chaque case

17 Représentation Les cases Des informations indispensables
Une même structure pour toutes les cases ? Différence point / cellule / arête

18 Analyse du projet Représenter un slitherlink Règles de résolution
Recherches

19 Règles de résolution Les règles de base Les règles en boucle
La règle des chemins

20 Règles de base Passage sur l'intégralité du tableau
Applications des règles de bases Sauvegarde des coordonnées des cases modifiées

21 Règles de base Cellule zéro : Trois adjacents : Trois diagonal :
(extension) Dans un coin :

22 Règles de résolution Les règles de bases Les règles en boucle
La règle des chemins

23 Règles en boucle Récupération des coordonnées précédemment sauvegardées Application des règles en boucle Sauvegarde des nouvelles coordonnées modifiées On recommence...

24 Règles en boucle CompleterPoint CompleterCellule :

25 Règles en boucle Arête arrivant sur une cellule : Un diagonal :

26 Règles en boucle Mais aussi : Les règles dans un coin !

27 Règles en boucle Qu'est-ce qu'un coin ?
Simplement des arêtes éteintes !

28 Règles de résolution Les règles de bases Les règles en boucle
La règle des chemins

29 Règle des chemins Un slitherlink = UNIQUE CYCLE
deux cycles ou plus sur le slitherlink alors ils ne peuvent pas se fermer On éteint les arêtes qui ferment ces cycles

30 Règle des chemins

31 Recherches Les règles sont-elles suffisantes pour résoudre entièrement un slitherlink ? Comment propager les règles ?

32 Développement Les informations de la structure Kase
Simplification des appels avec des fonctions L'initialisation Application des règles et propagation Interface graphique

33 La structure Kase La structure Kase stocke les informations d'une case du tableau : Les coordonnées de la case Nombres d'arêtes incidentes allumées/éteintes Les coordonnées du chemin formé État de l'arete(0:éteinte, 1:allumée, -1:inconnu) Degré de la cellule Nombre d'arete adjacentes allumées/éteintes

34 Appels de fonctions Pour simplifié, nous avons utilisé quelques fonctions auxiliaires, par ex : <degeCellule> qui retourne le degré de la cellule <celluleDroite/Gauche/Haut/bas> retourne les coordonnées de la cellule à droite/gauche/haut/bas <miseAjour> affiche les points, les aretes verticales et horizontales allumées et éteintes <areteVerticale/Horizontale> vérifie si c'est une arete verticale/horizontale

35 Initialisation La création du tableau de dimension (2*nbligne+5,2*nbcolonne+5) à l'aide de la fonction creertab à partir de la taille récupérer du fichier .txt Éteindre les arêtes dont on a pas besoin c'est à dire les arêtes se situant en dehors du slitherlink en utilisant la fonction initbord

36 Application de règles et propagation
D'abord, nous appliquons les règles de bases en passant sur toutes les cases du tableau, ceci nous permet d'allumer ou d'éteindre certaines arêtes du slitherlink et de garder les coordonnées de toutes les cases modifiées dans une pile Ensuite, La pile nous évite de reparcourir le tableau en cherchant une case satisfaisant une règle, voilà pour quoi nous avons décidé d'implémenter une pile de coordonnées, afin de propager les règles


Télécharger ppt "Résolution de grilles Slither Link"

Présentations similaires


Annonces Google