Débutante en Prolog

Résolu
roseT Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
roseT Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je suis débutante en Prolog et j'ai un exercice qui paraît simple mais auquel je n'ai trouvé une solution.
L'exercice est:
Définir le prédicat suivant: Premier(X,L) qui signifie X est le premeir élément de la liste L.

Merci infiniment pour votre aide.

8 réponses

akira
 
Bonjour Rose,

Il y a une éternité que je n'ai pas fait de prolog, mais si mes souvenirs sont exacts, voici le prédicat tel que je l'écrirais :

premier[X, X | L].


j'attends éventuellement une remarque ou une réponse voir une question...


:) ++
0
akira
 
Bonjour,

Je croyais bien en avoir fini avec le prolog (pour toujours je pensais....), mais voilà que tu me bombardes de prédicats.... pauvre de moi...
donc voici le prédicat dernier, j'ai supposé que le but était de dire si un élément était le dernier d'une liste...

dernier(X, X).
dernier(X, [ _ | L ] ) :- dernier(X, L).


tu me diras si j'ai juste et/ou si tu comprends pas.... merci :)
tu peux éventuellement m'envoyer d'autres prédicats, je rigolais plus haut(même si j'aime pas trop ce langage).



:) ++
0
akira
 
Chere Rose,

Je vais tenter de t'expliquer (euh je te tutoie pour simplifier... désolé... tu peux en faire de même...) la solution même si expliquer du prolog sur un forum relève de l'exercice de styles sachant que je ne suis vraiment pas un spécialiste de ce langage...

donc voici le prédicat :

dernier(X, X).
dernier(X, [ _ | L ] ) :- dernier(X, L).

En fait, on fait de la récursivité, à chaque intération du couple X et LISTE on retire l'élément de tête. (seconde ligne)
Si on arrive au dernier élément la liste n'a plus qu'un élement, et si cet élément est identique à X, alors l'expression "match" la premiere ligne donc renverra TRUE .

Fais le moi savoir si tu comprends pas. Je peux essayer d'expliquer différement.

:)
0
roseT Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci bien akira pour la réponse. Elle m'a trop aidé.

Mais j'ai beaucoup essayé d'établir une analogie entre cette question et une autre en vain donc,si tu le permets, j'ai encore un autre prédicat à défiinir:"dernier(X,L)

Merci infiniment.
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ctiti60 Messages postés 1017 Date d'inscription   Statut Membre Dernière intervention   70
 
Juste un petit coucou pour féliciter Akira. J'ai également fait du prolog, mais je ne me souvenais pas de la moitié du code que tu as mis pourtant c'est le plus basique :)
Bonne chance également à roseT. Le prolog c'est spécial, mais finalement marrant dans un certain sens.
-1
roseT Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonsoir,
Je vous remercie une autre fois mais cette fois ci plus fortement et milles excuses à cause de le peine que je vous cause avec mes prédicats.

c'est trop gentil de votre part.

Mais sincèrement, je n'arrive pas à comprendre la solution.
De toute façon, je vous remercie infiniment..

Cordialement
-1
roseT Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonsoir akira,
une autre fois merci pour la peine que vous prenez..
C'est bien cette fois ci j'ai compris un peu la solution. et si j'ai bien assimilé, on peut toujours penser à la récursivité pour définir des prédicats.

Ah, vous dites que vous n'êtes pas spécialiste en Prolog mais, peut être êtes vous spécialiste en bonne manière..

Remarque: vous pouvez bien sur me tutoyer mais pas la réciproque car on nous dit toujours que nous devons respecter (bien sur de toute sorte) celui qui nous aide.

Cordialement.
-1
roseT Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonsoir de nouveau akira,

Si vous le permettez, je voudrais bien savoir si vous avez quelques chose sur Prolog (titre de livre, site...) et je serais trop reconnaissante.

(J'ai bien abusé ,Non!!!!)
: )

Merci infiniment.
-1