+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro hakim am
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Nom : Homme hakim am
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 1
    Points
    1

    Par défaut [prolog] Le predicat assert en prolog

    Bonjour à tous,
    Cette question est destinée aux spécialistes de la programmation récursive en prolog

    Mon soucis est comme soucis :
    -Quand je déclare mon prédicat suivant :

    Code :
    nombre(Nom,X):-ligne(Nom,Liste), length(Liste,X).
    et quand je fais appel à : "?- nombre(Nom,X)." dans ma console, il me renvoi le résultat une seule fois.
    De ce coté la, parfait et aucun soucis.

    Mais le problème est dans la suite, c'est que, quand je déclare mon prédicat suivant :

    Code :
    create_nb:-assert((nombre(Nom,X):-ligne(Nom,Liste), length(Liste,X))).
    et quand je fais appel ici à : "?- nombre(Nom,X)." dans ma console, il me renvoi le résultat en double ou en triple.

    Sauriez-vous de vient le problème SVP?

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Inscrit en
    septembre 2003
    Messages
    4 580
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 4 580
    Points : 6 015
    Points
    6 015

    Par défaut

    Attention, assert ajoute dans la base de données générale de Prolog. Donc si on le fait 2 ou trois fois de suite le code qui effectue le assert les faits sont ajoutés deux ou trois fois.
    Pour s'en assurer, il sufit de faire listing(nombre). en mode console, il doit apparaître deux ou trois fois.

    Pour vider la base de données, il faut faire retractall(nombre(_,_)).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi

  3. #3
    Invité de passage
    Homme Profil pro hakim am
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Nom : Homme hakim am
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    Merci Beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •