IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Prolog Discussion :

[prolog] Le predicat assert en prolog


Sujet :

Prolog

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    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 : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci Beaucoup

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

Discussions similaires

  1. assert en prolog
    Par bibi boom dans le forum Prolog
    Réponses: 8
    Dernier message: 24/12/2012, 16h12
  2. [Sictus Prolog] Problèmes avec ASSERT et OPERATORS
    Par barejo dans le forum Prolog
    Réponses: 0
    Dernier message: 18/06/2009, 11h42
  3. [Turbo Prolog] Assert
    Par f25diablovos dans le forum Prolog
    Réponses: 1
    Dernier message: 08/05/2008, 23h11
  4. [GNU Prolog][Débutant] Comprendre les predicats
    Par frp31 dans le forum Prolog
    Réponses: 2
    Dernier message: 26/07/2007, 21h37
  5. Réponses: 9
    Dernier message: 30/05/2006, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo