miniserveur@ifrance.com writes:
Bonjour je débute en PROLOG (je trouve ce langage super) et j'aimerais
contruire un porgramme :
par exemple une personne parle et dit une chose qui est vrai comme : il
y a foot le jeudi
une autre personne dit une chose fausse comme : il y a foot le jeudi
enfin un derniére personne propose il y a foot le mercredi ce qui sera
la bonne reponse vu que les 2 precedentes s'opposent.
j'aimerais pouvoir traduire ces phrases en prolog et ensuite trouver la
bonne réponse pour le foot (c'est a dire le bon jour).
donc on a comme faits:
on_a_dit(il_y_a(foot,jeudi)).
on_a_dit(il_n_y_a_pas(foot,jeudi)).
on_a_dit(il_y_a(foot,mercredi)).
j'ai représenté comme ceci mais ça ne marche pas, si quelq'un peux
m'aider ???
non(_p) :- _p,!,fail.
non(_).
p(foot,jeudi).
p(foot,mercredi).
application :- p(foot,jeudi) , non(p(foot,jeudi)), p(foot,mercredi).
Voila en fait j'aimerais eliminé le foot jeudi pour qu'il ne reste que
le foot mercredi mais ça ne marche pas :(
je voudrais aussi affciher le jour qui doit etre le bon , c'est à dire
sans opposition donc mercredi.
quand_y_a_t_il(Quoi,Quand) :- on_a_dit(il_y_a(Quoi,Quand)),
not(on_a_dit(il_n_y_a_pas(Quoi,Quand))).
application :- quand_y_a_t_il(foot,Quand),write(Quand).
On peut aussi modifier la base de donnée de prolog:
on_dit(non(X)) :- retract(X),!.
on_dit(X) :- assert(X).
:- dynamic(il_y_a/2).
:- on_dit(il_y_a(foot,jeudi)).
:- on_dit(non(il_y_a(foot,jeudi))).
:- on_dit(il_y_a(foot,mercredi)).
application :- il_y_a(foot,Quand),write(Quand).
Ça a l'avantage de ne pas laisser de faits invalides en mémoire:
3 ?- ['foot2.pl'].
% foot2.pl compiled 0.00 sec, -172 bytes
Yes
4 ?- application.
mercredi
Yes
5 ?- il_y_a(foot,Quand).
Quand = mercredi ;
No
--
__Pascal Bourguignon__
http://www.informatimago.com/
Cats meow out of angst
"Thumbs! If only we had thumbs!
We could break so much!"