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

  FORUM HardWare.fr
  Programmation
  Divers

  [Prolog] Distinction du prédicat "is_name(nom)."

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Prolog] Distinction du prédicat "is_name(nom)."

n°2520762
lady287
La lumière fuse
Posté le 23-03-2026 à 12:14:07  profilanswer
 

Bonjour !
 
Ce script est commun à trois programme nommés logname, logon, pname.
Bien que pname et logon soit différent, leur résultat est identique.
Cependant, pour ceux-là et logname, les résultats diffèrent.
 
En l'occurence de logname, Swi-Prolog répond "true." si l'argument passé au prédicat "is_name(nom)." est "nom" ou "Nom" car le dit prédicat trouvé dans la liste des prédicat Name est Name(nom) ; "false." si non.
Alors que logon et pname retourne alternativement l'argument  en tant qu'égalité supposé de la chaîne trouvée dans le prédicat Name.
 

Code :
  1. name(logname).
  2. is_name(V) :-
  3. name(V), !,
  4. write('Eureka')
  5. ; open('./error.txt', write, Stream),
  6. close(Stream),
  7. name(V), !,
  8. write('').


 
Que signifi "logon = logon" et "Manuel = logon" et "Manuel = manuel" lorsque Name contient "manuel" ou "logon" ?
S'il vous plait ?
Merci.


Message édité par lady287 le 23-03-2026 à 12:38:39

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
mood
Publicité
Posté le 23-03-2026 à 12:14:07  profilanswer
 

n°2520820
Trap D
Posté le 24-03-2026 à 15:43:20  profilanswer
 

Bonjour
Que veux-tu faire exactement ?
Si tu interroges is_name avec un mot qui commence avec une minuscule, ce mot est considéré comme un atome, et SWI-Prolog recherchera dant la base de données name si ce mot figure.
Si oui réponse true, sinon réponse false.
Maintenant, si tu interroges is_name avec un mot commençant par une majuscule, ce mot est considérer comme un variable qui sera unifiée avec le premier nom de la liste name, dans ce case logname.
Pour ta question sur les egalités je t(invites à réfléchir sur ce qui suit :

Code :
  1. 
?- manuel=toto.

  2. false.
  3.  ?- manuel=Toto.

  4. Toto = manuel.  
  5. ?- Manuel=toto.

  6. Manuel = toto.  
  7. ?- Manuel=Toto.

  8. Manuel = Toto.  
  9. ?- Manuel.

  10. % ... 1,000,000 ............ 10,000,000 years later

  11. %  
  12. %       >> 42 << (last release gives the question)



Enfin pourquoi ouvres-tu un fichier error.txt pour ne rien écrire dedans.
 
Je te propose un code, mais celui-ci peut ne pas correspondre à ce que tu recherches
 

Code :
  1. name(logname).
  2. is_name(V) :-
  3.     name(V), !,
  4.     write('Eureka');
  5.     open('./error.txt', write, Stream),
  6.     write(Stream, V),
  7.     write(Stream,' : Echec'),
  8.     close(Stream).

Message cité 1 fois
Message édité par Trap D le 24-03-2026 à 15:48:52
n°2520844
lady287
La lumière fuse
Posté le 24-03-2026 à 19:53:36  profilanswer
 

Bonjour Trap D !
 
Libérons nous de la question la plus simple.
 

Trap D a écrit :

Bonjour
Enfin pourquoi ouvres-tu un fichier error.txt pour ne rien écrire dedans.
 
Je te propose un code, mais celui-ci peut ne pas correspondre à ce que tu recherches
 

Code :
  1. name(logname).
  2. is_name(V) :-
  3.     name(V), !,
  4.     write('Eureka');
  5.     open('./error.txt', write, Stream),
  6.     write(Stream, V),
  7.     write(Stream,' : Echec'),
  8.     close(Stream).



 
 
Le fichier erreur témoigne du résultat.
Je traite le résutat en lisant le répertoire courant.
Si le fichier erreur.txt est présent, je procède à une taritelent adapté ; Si non je termine le programme.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2520855
Trap D
Posté le 25-03-2026 à 09:01:54  profilanswer
 

lady287 a écrit :

je procède à une taritelent adapté .


Désolé, je ne comprends pas ce mot

Message cité 1 fois
Message édité par Trap D le 25-03-2026 à 09:03:17
n°2520925
lady287
La lumière fuse
Posté le 25-03-2026 à 16:10:42  profilanswer
 

Trap D a écrit :


Désolé, je ne comprends pas ce mot


Tu peux utiliser la fonction, is_misspelling de Gnat. A moisn qu'elle soit dans Ada.  :D  
 
Désolé ; Pardon ?
 
Traitement.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2520967
Trap D
Posté le 26-03-2026 à 08:45:25  profilanswer
 

ADA connais pas, je ne peux t'aider (et encore ...) qu'en Prolog

n°2521011
lady287
La lumière fuse
Posté le 27-03-2026 à 06:38:37  profilanswer
 

Trap D a écrit :

ADA connais pas, je ne peux t'aider (et encore ...) qu'en Prolog


Avec Ada, on peut appliquer la procédure To_Lower sur une chaîne de caractères, puis To_Upper sur un charactère pour adapter Une chaîne en majuscule afin d'obtenir le mot désiré avec une unique majuscule en début de mot.
Ce qui est agréable pour représenter un mot étant un prénom comme ici, Ada.
C'est gentil d'avoir contribuer au problème.
 
J'attends encore, de l'aide concernant le propos de ce topic.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2521023
Trap D
Posté le 27-03-2026 à 09:38:08  profilanswer
 

Si ça peut t'aider voici un petit code Prolog qui met le premier caractère d'un atom en majuscule

Code :
  1. first_upper(X,Y) :-
  2. downcase_atom(X, X1),
  3.   atom_codes(X1,[H|Z]),
  4.   to_upper(H,HU),
  5.   atom_codes(Y,[HU|Z]).


Le rendu

Code :
  1. ?- first_upper('TRUC',X).

  2. X = 'Truc'.
  3. ?- first_upper(truc,X).

  4. X = 'Truc'.


n°2521126
lady287
La lumière fuse
Posté le 28-03-2026 à 16:34:00  profilanswer
 

Bonjour !
Merci Trap D.
C'est sympa de contibuer à la richesse de chacun.
 
Pour préciser ma question, relative au égalité évoquées dans mon message initial, je vais exposé les deux alternative correspondante à logame retournant pour sa pare true, ou false.
 
Le premier, peut-être de sémantique différente de sa variante est comme je l'ai exposé aussi dans mon premier message semsiblement différent de logname et voici l'appel à Swi-Prolog passé dans un appel de la fontion système importée avec Ada :
 

Code :
  1. -- Ah, et bien ; Forum.Hardware.fr semble avoir supprimer la source convoitée.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2521127
lady287
La lumière fuse
Posté le 28-03-2026 à 16:50:26  profilanswer
 

C'est pas sympa d'avoir éffacer les sources de mon répertoire sur mon disque.
Entre les 50 tt que j'ai acquissé alors qu'il n'y avait pas demotivation rationnel à ces sanction, et votre obstination à poursuivre votre provocation consistant à me sanctionner encore avant de présenter vos excuse pour les mauvaise blague que celle ci porrait représenté malgrès constater que votre ambition est de nuire à la communauté par sanction et ici, un accès à un disque malgrès qu'il soit hors DMZ ; Je l'ai évoqué sur mon site.
 
L'automate que constitu forum.hardware.fr est alors comme ChatGPT identifié comme un dispositif ennemi.
 
L'algo applicant la thèse expsoant que pour répondre à uen question la supprimer suffise.
 
 
En l'occurence, il s'agissait d'appeler Swi-Prolog aletrnativement avec une chaine quelconque ou le nom du programme lui même.
 
Les égalité retournées en témoigaient la distinction avec le programme logname dont idenique au programme main publié dans la section Ada.
 
Merci quand même poru votre accueil ?
En vous souhaitant bonne chaîne.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site

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

  [Prolog] Distinction du prédicat "is_name(nom)."

 

Sujets relatifs
[Ada][Gnat] Ada.Directories.Extension(Name : String) return String[Swi-Prolog] Retourner un numero d'erreur si le résultat est false
[Prolog][Resolu] predicat "is_name"[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 bureau
Help Problème VBA: Seriescollection.nameprobleme de $_SERVER['SERVER_NAME']
Plus de sujets relatifs à : [Prolog] Distinction du prédicat "is_name(nom)."


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