Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro Olivier Alves
    Étudiant
    Inscrit en
    septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Nom : Homme Olivier Alves
    Localisation : Portugal

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

    Informations forums :
    Inscription : septembre 2012
    Messages : 3
    Points : 0
    Points
    0

    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
    Inscrit en
    septembre 2003
    Messages
    4 559
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 4 559
    Points : 5 478
    Points
    5 478

    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 : Intérieur avec jeune femme de Vilhelm Hammershoi

  3. #3
    Invité de passage
    Homme Profil pro Olivier Alves
    Étudiant
    Inscrit en
    septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Nom : Homme Olivier Alves
    Localisation : Portugal

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

    Informations forums :
    Inscription : septembre 2012
    Messages : 3
    Points : 0
    Points
    0

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •