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 :

précision prédicat prolog


Sujet :

Prolog

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 51
    Points : 51
    Points
    51
    Par défaut précision prédicat prolog
    Bonsoir à tous.

    Je suis plus ou moins débutant en prolog, et je rencontre des problème dans l'écriture de deux prédicats.

    Le premier, paire(L,L1,L2) tel que L2 soit la liste de toutes les paires possibles du premier élément de L et des éléments de L1.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    paire([X],[Y],[X,Y]):-!.
    paire([X|L],[Y|L2],[Z|Z2]):- Z = [X,Y], paire([X],L2,Z2).
    Voici un exemple de test:

    ?- couple([a],[b,c,d],L).
    L = [[a, b], [a, c], a, d].
    Ce qui correspond presque au résultat, mais je voudrais avoir L= [[a, b], [a, c], [a, d]].

    Voila, si quelqu'un peut m'aider ou me donner un indice...

  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
    L'erreur est dans la première règle, lorsque tu n'as plus qu'un seul élément dans la deuxième liste, es-tu sur que tu as écrit le bon resultat ?
    "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
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Je ne vois vraiment pas...

    Lorsqu'il y a un seul élément dans la deuxième liste, les solutions se limite au couple du premier élément de la premiere liste et de l'unique élément de la deuxieme, non?

  4. #4
    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
    Tout à fait, mais tu veux que le résultat soit une liste, non ? Donc dans ce cas, le résultat sera une liste dont le seul élément sera le couple...
    "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

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Tu veux dire que je devrais écrire ça?
    couple([X|L],[Y],[[X,Y]]):-!.

    Parceque j'ai essayé, et le résultat est alors:

    L = [[[a, a]], [[a, b]], [[a, c]], [a, d]].

    Ce qui est bon pour le dernier éléement mais pas pour les autres!

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Ah, c'est bon, mais j'ai du modifier aussi la deuxième ligne en considérant une autre approche.

    Merci beaucoup pour ton aide, voici ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    couple([X],[Y],[[X,Y]]):-!.
    couple([X|L],[Y|L2],Z3):- 
        couple([X],[Y],Z),
        couple([X],L2,Z2),
        append(Z,Z2,Z3).

  7. #7
    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
    non non, ce code-ci fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    paire([X],[Y],[[X,Y]]):-!.
    paire([X|_L],[Y|L2],[Z|Z2]):- Z = [X,Y], paire([X],L2,Z2).
    ?- paire([a],[b,c,d],L).
    L = [[a,b],[a,c],[a,d]].
    "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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Prédicat Prolog Voyage
    Par xeron33 dans le forum Prolog
    Réponses: 8
    Dernier message: 09/03/2010, 22h01
  2. Prédicat somme(L1,L2,L3) Prolog
    Par xeron33 dans le forum Prolog
    Réponses: 7
    Dernier message: 22/08/2009, 14h01
  3. Calcul des prédicats dans prolog
    Par nschoe dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 01/11/2008, 01h56
  4. Réponses: 1
    Dernier message: 09/01/2007, 15h33

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