Encadré par : Mr Philippe Janssen



Documents pareils
Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Architecture d'entreprise : Guide Pratique de l'architecture Logique

LES DÉTERMINANTS DE MATRICES

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

CAHIER DE S CHARGE S Remote Workload Manager

BACCALAUREAT GENERAL MATHÉMATIQUES

Interface PC Vivago Ultra. Pro. Guide d'utilisation

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

2.4 Représentation graphique, tableau de Karnaugh

SOMMAIRE. Travailler avec les requêtes... 3

Brique BDL Gestion de Projet Logiciel

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Service de réplication des données HP pour la gamme de disques Continuous Access P9000 XP

DETERMINER LA LARGEUR DE PAGE D'UN SITE et LES RESOLUTIONS d'ecran

modélisation solide et dessin technique

Télécom Nancy Année

Utilisation d'interwrite avec un vidéoprojecteur interactif EPSON

Programmation Objet - Cours II

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Service d'installation et de démarrage de la solution de stockage réseau HP StoreEasy 1000/3000

Stages ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

POUR ALLER UN PEU PLUS LOIN SUR UN TABLEUR. Version EXCEL

Le stockage local de données en HTML5

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Sybase PowerAMC 16. Guide des nouvelles fonctionnalités générales. DOCUMENTATION

Initiation au binaire

Navigation dans Windows

Championnat de France de Grilles Logiques Finale 7 juin Livret d'instructions

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Traitement de texte : Quelques rappels de quelques notions de base

6. Les différents types de démonstrations

Cours Excel : les bases (bases, texte)

Chapitre 1 : Introduction aux bases de données

Contrôle parental NetAddictFree 8 NetAddictFree 8 - Guide d utilisation

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

MEGA ITSM Accelerator. Guide de Démarrage

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Généralités sur le Langage Java et éléments syntaxiques.

INTRODUCTION GENERALE...1 LA CONNEXION ODBC :...1. CONNEXION AU TRAVERS D EXCEL(tm)...6. LOGICIEL QUANTUM GIS (Qgis)... 10

LES NOUVEAUTÉS DE ARCON 15 PRO

Alimentation portable mah

Guide pour la réalisation d'un document avec Open Office Writer 2.2

l'ordinateur les bases

À propos de votre liseuse... 5

Application 1- VBA : Test de comportements d'investissements

Trier les ventes (sales order) avec Vtiger CRM

PLAN DE CLASSIFICATION UNIFORME DES DOCUMENTS DU MSSS

Compte rendu de LA37 B, TP numéro 1. Evolution de la température et du degrée d'hydratation

chapitre 4 Nombres de Catalan

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Enquête 2014 de rémunération globale sur les emplois en TIC

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

LE PROBLEME DU PLUS COURT CHEMIN

Utilisation du client de messagerie Thunderbird

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Activités pour la maternelle PS MS GS

Créer une base de données

Table des matières. F. Saint-Germain / S. Carasco Document réalisé avec OpenOffice.org Page 1/13

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Interwrite Workspace version 8 avec le projecteur Epson

1.6- Génération de nombres aléatoires

Comment mettre en page votre livre

Accident de voiture : six bons réflexes pour remplir le constat amiable

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

Qu'est-ce que le BPM?

Traduction des Langages : Le Compilateur Micro Java

Visio Kit. Mode d'emploi


Salle de technologie

TAGREROUT Seyf Allah TMRIM

Compte-rendu de projet de Système de gestion de base de données

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

ManageEngine IT360 : Gestion de l'informatique de l'entreprise

Dossier table tactile - 11/04/2010

Analyse tarifaire en ligne (TAO) de l'omc

Module 16 : Les fonctions de recherche et de référence

Comprendre ITIL 2011

GUIDE D UTILISATION ADSL ASSISTANCE

Utiliser Access ou Excel pour gérer vos données

Tableau interactif salle 3104

Les Stratégies de Groupes

Suite dossier d appel

Nombre de marches Nombre de facons de les monter

WHS ProRealTime. édition

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Guide d'installation de l'amplificateur de signal pour périphériques mobiles Wi-Fi WN1000RP

Infolettre #18 : Les graphiques avec Excel 2010

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Transcription:

ABADIE Martin BENMOUFFOK Yasmine HEIDMANN Paul UTZEL Sylvain Encadré par : Mr Philippe Janssen 2014-2015

<<Nos sincères remerciements à monsieur Phillipe JANSSEN, pour son sérieux, son dévouement et ses conseils.>> 2

Sommaire Slitherlink Qu'est-ce que Slitherlink?... 3 Comment le résoudre Les règles de cellules... 4 Les Les règles de chemin... 5 Le Backtracking... 6 Les algorithmes Allumer... 7 Cellules aux arêtes Pleines... 8 Points à trois arêtes vides... 9 Structure de données Diagramme des classes... 10 Héritage... 11 Fichier de données... 11 Interface graphique Choix de la bibliothèque... 12 Affichage... 13 Conclusion... 13 Bibliographie... 14 3

1. Qu'est-ce que le Slitherlink: Le SlitherLink se joue sur une matrice rectangulaire formée de points. Entre ces points, on retrouve parfois des nombres (entre 0 et 3). L'objectif est de relier horizontalement ou verticalement les points adjacents afin de créer un cycle. Les nombres indiquent le nombre de côtés entourant chaque case. Par exemple, si une case contient le nombre 3, trois de ses côtés doivent être touchés par le trait continu. On indique souvent d'un X une ligne que l'on peut pas allumer. La figure ci dessous donne un exemple d instance de problème et sa solution. Comme beaucoup de casse-têtes et de puzzles le Slitherlink est un problème NP-complet. C'est un jeu difficile à résoudre. Les règles qu'on appliquent ne sont pas toujours suffisantes,nous ne pouvons pas donc espérer trouver un algorithme de complexité polynomiale qui résoudrait n'importe quelle instance de problème. Pour la création de notre programme nous traiterons que les grilles ayant une solution unique. 4

Comment résoudre? Pour la compréhension de ce jeu nous avons joué à plusieurs parties de SlitherLink, lors de ces parties nous avons mieux compris la méthode de résolution. Nous avons remarqué qu'il existe différentes règles qui s'appliquent tout au long de la grille pour la résolution. Ces règles permettent de déduire l'état de certaines arêtes. Les règles des cellules : Figure 1 Cellule 0 Cette règle montre que si une case contient le chiffre 0, alors aucune arête de cette case ne s'allumera. Figure 2 Deux 3 adjacents Dans le cas des deux 3 adjacents, il existe deux façons de contourner les cases(comme le représente le contour gris ). Dans les deux cas on empreinte les trois arêtes. De plus les arrêtes marquées d'une croix rouge restent nécessairement éteintes. 5

Figure 3 Règle des coins Nous voyons les trois différentes possibilités pour une case dans un coin (ou à coté du 0). Si le 1 est dans un coin alors les deux arêtes du coin s'éteignent. Si le 2 est dans le coin alors on peut allumer les arêtes comme sur le la figure. Si le 3 est dans un coin alors les deux arêtes du coin s allument. Les règles des points : Figure 4 Points aux arêtes vides Si le nombre d'arêtes allumées et rattachées à un même point est égale à deux, alors les deux autres arêtes rattachées à ce point restent éteintes. Figure 5 Points aux traits vides Si le nombre de trais vides autours d'un point est égale à trois, alors le quatrième trait est forcement vide aussi. 6

Les règles des chemins Nous avons découvert les règles des chemins un peu plus tard mais lors de certaines parties nous avons vu qu'il pouvait exister plusieurs chemins. Pour cette règle nous voyons dans la figure ci-dessus que s'il existe plusieurs chemins, alors nous devons toujours éteindre l'arête dont les deux extrémités ( les points de cette arête) sont elles mêmes les extrémités du chemin. Le backtracking: le retour sur trace est aussi une approche de résolution nécessaire.elle permet de designer une stratégie pour trouver des solutions à des problèmes de satisfaction de contraintes. Dans le cas du Slitherlink nous avons essayé pas à pas de trouver des solutions tout en s'assurant que le chemin mène à une résolution possible.dans le cas échéant, nous reprenons du point où la résolution pose problème et essayons de traiter le problème avec une approche différente. 7

Les algorithmes A partir des règles nous avons commencé à écrire les algorithmes correspondant aux règles de résolution. Pour cela nous avons procédé au partage de taches pour la rédaction des algorithmes. Martin a rédigé les algorithmes s'appliquant à un point. Yasmine a rédigé les algorithmes s'appliquant à une case. Sylvain a rédigé les algorithmes s'appliquant à une arête. Paul à son tour a rédigé les règles plus générales (comme celles vues plus haut). Chaque règle est implémentée par un algorithme, dont l'exécution vérifie si les conditions de déclanchement sont appliquées. Si c'est le cas, alors certaines arêtes s'allument ou s'éteignent. Voici quelques algorithmes représentant quelques exemples: Algorithme de la méthode allumer 8

Cellule aux nombres d'arêtes pleines 9

Diagramme des classes 10

Structure de données Pour la modélisation de notre grille nous avons utilisé comme structure de données un tableau dynamique multidimensionnels.chaque case du tableau représente une structure de données illustrant un point, une arête ou une cellule. Le tableau est de dimension (2*n+5, 2*m+5).Mais nous avons rajouté au tableau une ligne et une colonne supplémentaire pour limiter les bords de la grille. Les objets Pour la création de la grille, nous avons décidé d'utiliser une matrice d'objets, les objets correspondent à un point, une cellule ou une arête. Pour l'efficacité du programme nous avons utilisé l'héritage, même si nous n'avions aucune connaissance sur cette méthode nous avons fini par nous documenter et comprendre que grâce à l'héritage, la classe dérivée permettait de tirer profit de l'implémentation de la classe de base. Si B dérive de A avec cette sémantique, alors toutes les fonctions de B peuvent appeler les fonctions de A. Nous avions donc conclu que c'était la meilleure façon d'optimiser notre programme. De ce fait la classe Objet est la classe mère de Point, arête et Case. Pour la création et l'utilisation des objets de la matrice nous avons créé une classe "Coordonnées" qui a partir des i et j définissent si c'est un Point, Arête ou Case. Cordonnées.cpp 11

2-Lecture de fichier Le programme va en premier lieu lire les fichiers de données qui renvoie le contenu de la grille. 5 4 4 4 4 2 4 4 4 2 4 4 4 3 4 3 4 3 4 4 2 4 4 1 4 4 Voici un fichier de données qui représente une grille carrée 5x5 du jeu SlitherLink.. Le nombre 4 correspond a une case sans valeurs. Apres la lecture du fichier, le programme va agir localement case par case pour créer un chemin. Si la première case contient une valeur, alors celui ci récupère la valeur de la case, vérifie toutes les règles du programme susceptibles d'être appliquées.si celle ci le permettent, on allume une arête et de cette maniéré on agrandit le chemin, sinon on affiche une croix pour interdire d'allumer cette arête. Interface graphique : 1-le choix de bibliothèque L'une de nos plus grandes difficultés étaient le choix de la bibliothèque. Nous avons passé beaucoup de temps a comparer toutes les bibliothèques qui existent pour pouvoir finalement se focaliser sur la bonne. Nous avons finalement choisi la bibliothèque SFML(Simple and Fast Multimedia Library), car c'est une bibliothèque qui offre une interface simple vers les différents composants d'un PC, elle est multi plateforme et multi-langage. 2-Affichage: 12

Difficultés: o Le programme que nous avons crée reste incomplet. Comme nous l'avons cité au par avant c'est un problème NP-complet.Il existe encore des règles à déterminer pour la résolution de toutes les grilles. o Dans notre programme, nous avons traité que les grilles carrées, donc il faudrait plus de règles à déterminer pour les grilles plus difficiles. o Le backtrack, comme le montre l'exemple ci dessous : Supposition : Conséquence Conclusion o l'intégration du code de l'interface graphique. o Les conditions d'application de la règle des chemins. Ce projet en groupe fut bénéfique pour chaque membre de notre groupe, Nous avons su gérer notre temps de travail, la répartition des taches et l'organisation de notre équipe.nous avons acquis de nouvelles expériences avec des concepts nouveaux comme l'héritage et l'interface graphique. 13

Bibliographie: http://fr.wikipedia.org/wiki/slither_link http://www.puzzle-loop.com/ https://github.com/timhutton/slinker http://openclassrooms.com/ http://www.sfml-dev.org/index-fr.php http://www.developpez.net/forums/ 14