IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Prolog Discussion :

Nurikabe -- programmation logique par contrainte


Sujet :

Prolog

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Nurikabe -- programmation logique par contrainte
    Bonjour à tous et tout d'abord merci de regarder ce message.

    Je dois développer un logiciel capable de résoudre un Nurikabe de taille variable en prolog (sicstus).

    Le problème c'est que je ne sais pas par où commencer, j'ai quelques base de programmation par contraintes, à vrai dire très peu et je ne sais faire que les contraintes basique comme par exemple dire que A1 + A2 doit être égal à une somme donnée...

    J'ai jusqu'à dimanche prochain pour résoudre ce problème.
    J'aurais besoin d'une âme charitable pour venir a bout.

    Je vous explique le problème:
    Nurikabe est un puzzle qui consiste remplir une grille de X par X cases, dont certaines contiennent un chiffre, en fonction d'un certain nombre de contraintes.

    Le but est de déterminer pour chaque carré si il est blanc ou noir.

    Les cases noirs forment le "nurikabe".
    Elles doivent toutes être contigües par un côté, ne doivent pas contenir de nombre et ne doivent contenir aucun bloc 2x2 ou plus grand.

    Les cases blanches forment les îles.
    Chaque nombre "n" doit faire partie d'un îlot de "n" cases blanches.

    Chaque case blanche ne doit appartenir qu'à une seule île et chaque île doit contenir un nombre.

    Évidemment il y a d'autres contraintes mais celles-ci sont les plus basiques à comprendre et à appliquer.

    Voici une image d'un nurikabe résolu:


    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour.
    Tu n'en dis pas assez, quelles sont les autres contraintes, et qu'as-tu déjà tenté ?
    Je n'ai pas encore étudié ton problème en détail mais tu peux peut-être regarder cet article, les contraintes sont bien évidemment différentes mais il y a quelques similitudes.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Pour être honnête je n'est encore rien vraiment tenté, je cherche encore a comprendre comment créer mes propres contraintes et non pas de simple contraintes comme deux sommes égales par exemple.

    Pour la liste des contraintes elle est un peu longue mais j'aimerai commencer par les plus simples:

    1) Si une île est composée du chiffre 1 les cases aux dessus/dessous/gauche/droite d'elle doivent être noire

    2) si deux chiffre sont en diagonal directe les cases de la diagonal inverse doivent être noire.
    exemple:
    2|B
    B|3
    B représente une case noire

    3) toutes les cases noire doivent être reliés entre elles.

    4) il ne peut pas y avoir un carré de 4 case noire

    5) si deux case avec un chiffre sont distante d'une case celle-ci doit être noire
    Exemple: 3|B|3

    Le Nurikabe qui doit être résolu est representé de la façon suivante:
    Vars = [
    A1, A2, A3, A4, 2,
    B1, B2, B3, B4, B5,
    3, C2, C3, C4, 3,
    D1, D2, D3, D4, D5,
    2, E2, E3, E4, E5
    ].

    Dans un premier temps le programme doit être capable de résoudre un nurikabe spécifique comme celui du dessus mais bien évidemment la disposition peux changer en fonction du nurikabe que l'on veut résoudre.

Discussions similaires

  1. programmation par contrainte
    Par ratrout dans le forum Langage
    Réponses: 5
    Dernier message: 09/12/2016, 21h51
  2. Programmation par contrainte en Java
    Par domas_24 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/06/2008, 14h27
  3. Programmation par contrainte
    Par croc14 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 19/03/2007, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo