Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Prolog
Prolog Forum d'entraide sur la programmation en langage Prolog. Avant de poster : Cours Prolog
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/10/2012, 20h35   #1
bougnbie
Membre à l'essai
 
Homme Ali
Étudiant
Inscription : octobre 2012
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Ali
Localisation : France

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

Informations forums :
Inscription : octobre 2012
Messages : 33
Points : 20
Points : 20
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 :
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:

Citation:
?- 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...
bougnbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2012, 11h43   #2
Trap D
Rédacteur/Modérateur
 
Avatar de Trap D
 
Inscription : septembre 2003
Messages : 4 434
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 4 434
Points : 5 298
Points : 5 298
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 : Intérieur avec jeune femme de Vilhelm Hammershoi
Trap D est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/10/2012, 12h01   #3
bougnbie
Membre à l'essai
 
Homme Ali
Étudiant
Inscription : octobre 2012
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Ali
Localisation : France

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

Informations forums :
Inscription : octobre 2012
Messages : 33
Points : 20
Points : 20
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?
bougnbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2012, 12h39   #4
Trap D
Rédacteur/Modérateur
 
Avatar de Trap D
 
Inscription : septembre 2003
Messages : 4 434
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 4 434
Points : 5 298
Points : 5 298
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 : Intérieur avec jeune femme de Vilhelm Hammershoi
Trap D est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/10/2012, 12h51   #5
bougnbie
Membre à l'essai
 
Homme Ali
Étudiant
Inscription : octobre 2012
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Ali
Localisation : France

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

Informations forums :
Inscription : octobre 2012
Messages : 33
Points : 20
Points : 20
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!
bougnbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2012, 13h05   #6
bougnbie
Membre à l'essai
 
Homme Ali
Étudiant
Inscription : octobre 2012
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Ali
Localisation : France

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

Informations forums :
Inscription : octobre 2012
Messages : 33
Points : 20
Points : 20
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 :
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).
bougnbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2012, 22h32   #7
Trap D
Rédacteur/Modérateur
 
Avatar de Trap D
 
Inscription : septembre 2003
Messages : 4 434
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 4 434
Points : 5 298
Points : 5 298
non non, ce code-ci fonctionne très bien :
Code :
1
2
paire([X],[Y],[[X,Y]]):-!.
paire([X|_L],[Y|L2],[Z|Z2]):- Z = [X,Y], paire([X],L2,Z2).
Citation:
?- 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 : Intérieur avec jeune femme de Vilhelm Hammershoi
Trap D est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h12.


 
 
 
 
Partenaires

Hébergement Web