Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1322 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [PROLOG] Je comprends pas cette logique....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PROLOG] Je comprends pas cette logique....

n°556717
greeeg
Posté le 02-11-2003 à 14:31:39  profilanswer
 

Bonjour,  
 
j'ai fait un petit programme en Prolog pour voir un peu comment ca marche, mais il y a un truc qui me rend fou :
 

Code :
  1. habitat(bear,forest).
  2. habitat(elephant,savanah).
  3. habitat(cat,home).
  4. brown(bear).
  5. black(cat).
  6. gray(elephant).
  7. gray(mouse).
  8. big(bear).
  9. small(cat).
  10. scary(dog).
  11. dark(Z) :-
  12.   black(Z).
  13. scary(Z) :-
  14.   dark(Z), habitat(Z,forest), big(Z).
  15. dark(Z) :-
  16.   brown(Z).


 
A la question scary(dog), il répond YES.
Mais aux question : dark(dog), big(dog), habitat(dog,forest), il me répond NO !!!!!
 
Là je comprends pas pourquoi.
 
Merci de votre aide.

mood
Publicité
Posté le 02-11-2003 à 14:31:39  profilanswer
 

n°556725
nraynaud
lol
Posté le 02-11-2003 à 14:56:19  profilanswer
 

en mettant les définitions de dark et scary avant les prédicats, c'est pas mieux ?
Y'a un ordre de définition en prolog ?


---------------
trainoo.com, c'est fini
n°556751
greeeg
Posté le 02-11-2003 à 15:24:43  profilanswer
 

j'ai essayé, c'est pareil

n°556756
chrisbk
-
Posté le 02-11-2003 à 15:29:18  profilanswer
 

t'as essayé en pas a pas  pour voir ce qu'il bricolait exactement ?

n°556763
nraynaud
lol
Posté le 02-11-2003 à 15:32:43  profilanswer
 

effectivement, y'a un des 2 scary qui efface l'autre.  
 
scary(dog) est faux à la fin de ton script.


---------------
trainoo.com, c'est fini
n°556766
Kristoph
Posté le 02-11-2003 à 15:34:04  profilanswer
 

Ca commence a être vieux pour moi le prolog, mais cette ligne la "scary(dog)." veux bien dire que scary(dog) repondra toujours YES non ?

n°556782
nraynaud
lol
Posté le 02-11-2003 à 15:40:39  profilanswer
 

Kristoph a écrit :

Ca commence a être vieux pour moi le prolog, mais cette ligne la "scary(dog)." veux bien dire que scary(dog) repondra toujours YES non ?

oui, la subtile différence se situe entre ce qu'il veut avoir et ce qu'il a.
mais son programme ressemble quand même fortement à ça :
http://www.csupomona.edu/~jrfisher [...] l/3_1.html


---------------
trainoo.com, c'est fini
n°556802
greeeg
Posté le 02-11-2003 à 15:51:07  profilanswer
 

nraynaud a écrit :

effectivement, y'a un des 2 scary qui efface l'autre.  
 
scary(dog) est faux à la fin de ton script.  


 
ah bon... pourquoi ?  :heink:

n°556828
nraynaud
lol
Posté le 02-11-2003 à 15:59:46  profilanswer
 

greeeg a écrit :


 
ah bon... pourquoi ?  :heink:  

J'aimerais bien le savoir moi aussi. Je suis un pizzaïolo du prolog, mais c'est ce que me dit http://kti.ms.mff.cuni.cz/~bartak/prolog/testing.html
 
je suis sur google en train de regarder les tutoriaux et cours.


---------------
trainoo.com, c'est fini
n°556833
nraynaud
lol
Posté le 02-11-2003 à 16:14:10  profilanswer
 

J'ai l'impression que c'est surtout utilisé pour sélectionner des données dans une base, pas pour en deviner.
 
En gros ton problème consterait à générer des animaux de toutes les couleurs tailles et habitat et à les classer : possible (éléphant gris)/impossible (éléphant petit), effrayant ou non.
 
C'est ce que je vois par exemple des exemple chèvre/chou/loup où on les voit générer tout le graphe et sélectionner les arcs intéressants.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 02-11-2003 à 16:14:10  profilanswer
 

n°1342433
Docteur_Cu​be
Posté le 09-04-2006 à 16:13:55  profilanswer
 

Désolé, je remonte un topic vieux de 3 ans ! (je l'ai trouvé après une recherche à propos de "prolog" ).  
 
Je n'ai pas essayé le petit script, mais une erreur saute aux yeux :  
 


dark(Z) :- black(Z).
scary(Z) :- dark(Z), habitat(Z,forest), big(Z).
dark(Z) :- brown(Z).  


 
Quand on met deux faits ayant même foncteur (de même arité) à la suite, on a un "ou" entre les deux règles. Mais il faut que les deux règles se suivent...  
Il faudrait écrire :  
 


dark(Z) :- black(Z).
dark(Z) :- brown(Z).
 
scary(Z) :- dark(Z), habitat(Z,forest), big(Z).  


 
Ainsi, on a : Quelque soit Z, si black(Z) ou brown(Z) alors dark(Z).  
 
 
Le reste me semble correct, mais j'ai la flemme d'essayer.. D'autant que l'auteur du topic est certainement devenu mille fois plus expérimenté que moi en porolog, et, s'il existe encore, rira en revoyant cet ancien sujet...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [PROLOG] Je comprends pas cette logique....

 

Sujets relatifs
[XFree] XError , je ne comprends pas a quoi ca correspond[SDL] je comprends pas bien une fonction...
Je comprends pas pkoi j'ai cette erreur sur ma vue sous Oracle[php] problème de logique
[sessions] hu ? |Oo| comprends po là[résolu]variable dynamique, comprends pas
[Access - VBA] je comprends plus rien aux INSERT INTO avec datesRassurez moi en me disant si je comprends bieng... Bit Vector.
Creation de ma base de donnée : logique...org.xml.sax.SAXParseException: Content is not allowed in prolog.
Plus de sujets relatifs à : [PROLOG] Je comprends pas cette logique....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR