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

  FORUM HardWare.fr
  Programmation
  Divers

  [Prolog][Resolu] predicat "is_name"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Prolog][Resolu] predicat "is_name"

n°2484163
lady287
La lumière fuse
Posté le 09-11-2024 à 23:21:51  profilanswer
 

Bonjour, je voudrai écrire un bout de code avec Prolog qui permet d'afficher "Eureka".
 
j'ai un prédicat "name" :
 
name(eureka).
 
et un prédicat "is_name" :
 
is_name(_) :-
   name($1), !,
   write ('Eureka').
 
 
dans un fichier "eureka.pl".
 
 
Et j'appelle swipl comme ça :
 
echo "is_name(eureka)." | swipl -f eureka.pl
 
 
Mais ça donne false.
 
 
Pouvez vous me donner un coup de main ?
 
S'il vous plait !


Message édité par lady287 le 12-11-2024 à 14:52:40
mood
Publicité
Posté le 09-11-2024 à 23:21:51  profilanswer
 

n°2484165
Trap D
Posté le 10-11-2024 à 08:51:59  profilanswer
 

false car le code est incorrect.
Tu dois obtenir comme erreur :  
 
ERROR: Unknown procedure: name/1
ERROR:   However, there are definitions for:
ERROR:         name/2
ERROR:  
ERROR: In:
ERROR:   [13] name($1)
ERROR:   [12] is_name(toto) at /home/joel/Documents/travail/VSCode/prolog/divers/eureka.pl:5
ERROR:   [11] toplevel_call(user:user: ...) at /usr/lib64/swipl-9.2.8/boot/toplevel.pl:1317
   Exception: (13) name($1) ? EOF: exit (status 4)
 
Au passage pas d'espace avant la parenthèse du prédicat write.
 
Ce qui fonctionne par exemple c'est un code comme ça
 
is_name(V) :-
  write(V).
 
 
Tu obtiendras toujours false ou true pour ce genre de code car en Prolog on pose une question au système qui répond Vrai ou Faux.
L'appel à Prolog est plus intéressant avec "echo "is_name(toto)." | swipl -q -f eureka.pl"
-q clot l'appel à SWI-Prolog

n°2484218
lady287
La lumière fuse
Posté le 11-11-2024 à 17:44:51  profilanswer
 

Merci Trap D.
 
Bonjour,
 
Je pige pas l'argument 'V'.
 
Mon objectif est d'afficher "Eureka" si je fourni le nom "eureka".
J'ai une condition normalement au prédicat is_name.

n°2484222
Trap D
Posté le 11-11-2024 à 22:39:03  profilanswer
 

Le programme écrit l'argument qui lui est passe (en l'occurence c'est V).
Je ne comprends pas ce que tu cherches à faire.
Quelle est pour toi la signification de $1 dans ton code ?
Ca ne correspond à rien en Prolog.
name existe en Prolog mais il nécessite 2 arguments. Par exemple

Code :
  1. ?- name(toto, L).

  2. L = [116, 111, 116, 111].  
  3. ?- name(X, [116,111,116,111]).

  4. X = toto.



Si tu veux que ton programme ecrive "eureka" c'est simplement

Code :
  1. is_name :-
  2.     write(eureka).


Tu obtiendras

Code :
  1. ?- is_name.
  2. eureka
  3. true.


Si tu veux absolument écrire Eureka alors le programme est  

Code :
  1. is_name :-
  2.     write('Eureka').


n°2484287
lady287
La lumière fuse
Posté le 12-11-2024 à 13:28:58  profilanswer
 

Je pensais déclaré un nom avec la liogne suivante :
 
name(eureka).
 
Afficher condutionnellment Euréka si je fournis le nom eureka avec le prédicat suivant.
 
is_name(_) :-
name($1), !,
write(Eureka).
 
Mais selon te indication mon prédicat is_name devrait prendre la forme suivante
 
is_name(V) :-
name(V), !,
write(Eureka).
 
Où le ligne suivante est un test conditionel :

Code :
  1. name(V), !,


Message édité par lady287 le 12-11-2024 à 14:13:08
n°2484293
lady287
La lumière fuse
Posté le 12-11-2024 à 14:11:46  profilanswer
 

Merci encore Trap D.
 
Ca fonctionne impécable.

n°2484307
lady287
La lumière fuse
Posté le 12-11-2024 à 14:49:19  profilanswer
 

Ah ! Non !
 
C'est pas bon.
 
Ca m'affiche Eureka même si j'entre autre chose.
 

Ah ! Non !
 
C'est bon !
 
Je me suis embrouillé dans mon code.
 
C'est bon !


Message édité par lady287 le 12-11-2024 à 14:52:09

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

  [Prolog][Resolu] predicat "is_name"

 

Sujets relatifs
[resolu] variable dans le name d'un input[Prolog] : ajouter un nombre à la bonne place dans une liste de nb
[vbs] recup user name pr copier un fichier sur le bureauHelp Problème VBA: Seriescollection.name
probleme de $_SERVER['SERVER_NAME']Name clash, non override avec des generics
' ' does not name a typedelegate + string name method
Formule correcte, mais ecrite de #name? dans la celluleverification code chargement java appelant un fichier prolog via jpl
Plus de sujets relatifs à : [Prolog][Resolu] predicat "is_name"


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)