predicat "is_name" [Prolog][Resolu] - Divers - Programmation
Marsh Posté le 10-11-2024 à 08:51:59
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
Marsh Posté le 11-11-2024 à 17:44:51
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.
Marsh Posté le 11-11-2024 à 22:39:03
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 :
|
Si tu veux que ton programme ecrive "eureka" c'est simplement
Code :
|
Tu obtiendras
Code :
|
Si tu veux absolument écrire Eureka alors le programme est
Code :
|
Marsh Posté le 12-11-2024 à 13:28:58
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 :
|
Marsh Posté le 12-11-2024 à 14:49:19
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 !
Marsh Posté le 09-11-2024 à 23:21:51
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