Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.