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 :

Créer une liste de couplets


Sujet :

Prolog

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Créer une liste de couplets
    Salut! Je dois générer une liste de coordonnées ENTIERES appartenant à un rectangle.
    Les données sont X1,Y1 et X2,Y2 les coins du rectangle...
    Je suis en prolog 4 (je n'ai pas le choix), et j'ai la solution suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    % je définis ce qu'est un tuple cherché
    tuple([X1,Y1],[X2,Y2], [X,Y]) :-
             between(X1,X2,X),
             between(Y1,Y2,Y).
     
    % J'indique à Prolog que je veux tous les tuples verifiant mon, prédicat tuple
          tous_les_tuples(X, Y , L) :-
          bagof(T, tuple(X,Y,T), L).
    bagof renvoie : error : not implemented!
    Bon, j'essaye autrement...
    J'ai la solution suivante :

    - Générer une liste de (X2-X1+1)*(Y2-Y1+1) couplets
    - Contraindre la liste de couplets (en gros couplets_tous_entiers, valeurs_tous_compris_entre X1 et X2, Y1 et Y2, couplets_tous_différents)
    - Enumérer

    Le couplets_tous_differents chient car les contraintes doivent etre redondantes et du coup ça crashe purement et simplement!

    En attendant j'ai fait un double for mais c'est pas du tout le bon esprit :S

    Vous avez une idée de comment faire ça bien?

    Merci !

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Bonjour,

    Je crois que tu compliques le problème, à mon humble avis... Ce que je ferais si j'étais toi, c'est :
    • contraindre X entre X1 et X2,
    • contraindre Y entre Y1 et Y2,
    • énumérer X,
    • énumérer Y.

    En faisant ça, prolog4 se charge d'afficher tous les couples possibles au passage de la requête. A moins que tu ne doives spécifiquement les mettre dans une liste ?

  3. #3
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    PS : si tu dois récupérer une liste, un petit findall sur le prédicat que je viens de te décrire, et le tour est joué (testé).

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    D'accord, j'essaye dès que possible, merci pour ta réponse !
    Tu as testé avec Prolog 4 ou avec SWI Prolog?
    En SWI-Prolog la première solution que je poste marche alors qu'en prolog 4 le bagof dans ce cas là me renvoie "Error : not implemented"

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    J'ai tout fait en prolog4

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  2. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11
  3. Réponses: 3
    Dernier message: 20/02/2006, 18h32
  4. [EXCEL]Créer une liste (combo)
    Par elitost dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/12/2005, 16h55
  5. Réponses: 5
    Dernier message: 29/09/2005, 14h37

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