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 :

Aide instantiation prolog


Sujet :

Prolog

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Aide instantiation prolog
    Bonjour,

    je débute avec Prolog et je voulais savoir es ce que c'est possible de faire une instantiation d'un fact dans l'interface des requête et les sauvegarder pour une utilisation prochaine .

    je vous donne un exemple pour mieux comprendre :

    base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mere(X,Y).
    grandmere(A,B):- mere(A,K),mere(K,B).
    je veux faire une instantiation pour mere(X,Y) dans l'interface de prolog ( ?- ) et ajouter les nouveau facts dans la BDD pour les utilisés après.
    par exemple je veux ajouter mere(alice,john) dans la BDD a partir de l'interface des requête prolog.

    merci.

  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
    Bonjour

    Il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assert( mere(alice,john))
    Le fait sera conservé dans la BDD tout au long de la session.
    IL faudra évidemment le recréer à de la session suivante si nécessaire.
    "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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci ..

    j'ai essayé de l'utiliser sur mon programme qui est le suivant :
    le predicat CandRead est vrai si le domaine de O est un sous ensemble du domaine de S.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    :-dynamic [subjectHaveDomain/2].
    :-dynamic [objectHaveDomain/2].                
     
    element(X,[X|_]).
    element(X,[_|R]) :-element(X,R).
     
    sous-ensemble([],_).
    sous-ensemble([X|R],K) :-element(X,K),sous-ensemble(R,K).
     
    subjectHaveDomain(S,[D1|DN]).
    objectHaveDomain(O,[D1|DN]).
     
    canRead(S,O):-  subjectHaveDomain(S,L1),objectHaveDomain(O,L2),sous-ensemble(L2,L1).
    mais j'ai pas des bons résultats comme vous pouvez voir :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    ?- assert(subjectHaveDomain(a,[s,p])).
    true.
     
    30 ?- assert(subjectHaveDomain(b,[s,p,ts])).
    true.
     
    31 ?- assert(subjectHaveDomain(c,[s])).
    true.
     
    32 ?- assert(objectHaveDomain(o1,[s])).
    true.
     
    33 ?- assert(objectHaveDomain(o2,[p,ts])).
    true.
     
    34 ?- assert(objectHaveDomain(o3,[p])).
    true.
     
    35 ?- canRead(S,O).
    S = a,
    O = o1 ;
    S = a,
    O = o3 ;
    S = a ;
    S = a ;
    S = a ;
    S = a ;
    S = a ;
    S = a ;
    S = a ;
    S = a
    il reste toujours bloqué dans le a or je veux qui'il me donne les résultats pour le b et le c .

  4. #4
    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
    Le problème vient de la declaration des clauses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    subjectHaveDomain(S,[D1|DN]).
    objectHaveDomain(O,[D1|DN]).
    Supprimez les et tout semble fonctionner : chez moi j'obtiens :
    ?- canRead(S, O).
    S = a,
    O = o1 ;
    S = a,
    O = o3 ;
    S = b,
    O = o1 ;
    S = b,
    O = o2 ;
    S = b,
    O = o3 ;
    S = c,
    O = o1 ;
    false.
    "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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    oui effectivement ... Merci

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

Discussions similaires

  1. votre aide svp prolog
    Par yacne dans le forum Prolog
    Réponses: 2
    Dernier message: 31/12/2012, 15h27
  2. Besoin d'aide concernant prolog et psp
    Par sheldon_f dans le forum Prolog
    Réponses: 25
    Dernier message: 24/04/2012, 23h26
  3. Aide en Prolog
    Par jackishere dans le forum Prolog
    Réponses: 5
    Dernier message: 09/01/2012, 09h29
  4. Aide compréhension ProLog
    Par magnus2229 dans le forum Prolog
    Réponses: 1
    Dernier message: 12/12/2010, 20h12

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