Résolution de grilles Slither Link

Slides:



Advertisements
Présentations similaires
Projet Théorie des graphes
Advertisements

Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
Julien Delmas Formateur TICE Médiapôle d’Argenteuil Formation TICE à la carte Traitement de texte avancé Médiapôle d’Argenteuil Lundi 4 mai 2008.
1 Après 3 séances ● Utilisation du système Linux – Il faut maîtriser l'utilisation de la souris (« copy/paste » des textes donnés) – Utilisation de la.
Qu'est ce que le logiciel libre ?. Qu'est-ce qu'un logiciel ? ● C'est une application informatique qui répond à un besoin : traitement de texte, navigateur.
A la fin de ton année de 4 ème, tu dois être capable d’utiliser parfaitement un Mais d’abord qu’est-ce qu’un TABLEUR ? ???? TABLEUR- GRAPHEUR Page suivante.
Recherche des fonctions pour la rédaction de l'expression fonctionnelle du besoin à l'aide d'un outil graphique : Le diagramme des inter-acteurs. Le diagramme.
L'image: Le codage des images BacPro SEN Lycée Condorcet.
L’algorithmique au premier degré, c’est possible Partage d’expériences Conférence-atelier.
Mini Projet : Station Météo ➢ Etudiant E1 : ✔ Réception de la trame, analyse, transmission. ➢ Etudiant E2 : ✔ Réception des données, traitement, stockage.
Portage d'une application sur GPU CreditCruncher.
Comment utiliser le débogueur de Visual Studio /8/2015 INF145 1 Créé par Julien Galarneau Allaire, révisé par Eric Thé S.E.G.
Interfaçage entre Maple et du code externe
Les Bases de données Définition Architecture d’un SGBD
Création et téléchargement des fichiers
I- ANALYSE DU BESOIN / Plan
Chapitre 2 : Les circuits électriques
I- ANALYSE DU BESOIN / Plan
Evaluation diagnostique
Les Instructions Itératives (Les Boucles)
Pierre Joli Cours de Mathématique Pierre Joli
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Gestion de version centralisée et décentralisée
Micro Informatique au Cellier
Rechercher des articles et des sites web
Javadoc et débogueur Semaine 03 Version A17.
MOUTON Marielle - DUMETZ François - LEVECQUE Alain
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Les objectifs du cours Savoir utiliser un Tableur
Semaine 11 Les pointeurs (suite)
Les fonctions.
3ème Livre 1 Rappel.
Chapitre 12 Surveillance des ressources et des performances
DESSIN TECHNIQUE Té de dessin Collège technique Sousse Collège technique Sousse.
Tableaux à plusieurs dimensions en langage C
Tableaux à plusieurs dimensions en langage C
Chapitre 2: Les équations et les inéquations polynômes
La droite de régression
Daniel JOUVENOT Laboratoire de l’Accélérateur Linéaire (LAL–ORSAY)
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Cours N°9: Algorithmiques Les Tableaux 1
Les tableaux.
Commande d’une voiture par LABVIEW/ ARDUINO / Bluetooth
Structure D’une Base De Données Relationnelle
Programmation Android Debugger ses applications
LES SOURCES D’INFORMATIONS
Cours N°10: Algorithmiques Tableaux - Matrices
Plus de 4000 langages....
Dérivation et intégration
Résolution d’un problème de diffusion 3D
Programmation Android Première application Android
Explication du code source dans SimpleWireframeSketcher
Transition vers l’assignation automatique des stages à la résidence
RABAH M ed Ali 2018/2019
PROGRAMMATION SCIENTIFIQUE EN C
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Projet Logimage ESP Dakar Janvier 2019 Alain Faye
Relier proportionnalité et fonction linéaire
Tableau de bord d’un système de recommandation
Les graphiques des relations linéaires
Encadrée par: - Mr. Abdallah ALAOUI AMINI Réalisée par : -ERAOUI Oumaima -DEKKAR Amal - ES-SAHLY Samira -Houari Mohammed PROGRAMMATION MULTIOBJECTIFS.
Aide à la décision M. Barbot – 09/03/2016 – EFREI
TP N°1 : GUI en NetBeans Module R & C Université de Jijel
Contenu Systèmes de test parallèles Multithreading Synchronisation
Qu’est ce qu’une page web? Comment fonctionne un site web?
App Inventor trucs Afficher une image depuis le Web ou Google Drive.
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
La programmation dynamique
Transcription de la présentation:

Résolution de grilles Slither Link

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

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

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

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

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

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)

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

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

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

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é

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é

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

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

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

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

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

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

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

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

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

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

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...

Règles en boucle CompleterPoint CompleterCellule :

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

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

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

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

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

Règle des chemins

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

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

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

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

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

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