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 :

Traitement des listes avec GNU Prolog pour Java


Sujet :

Prolog

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Par défaut Traitement des listes avec GNU Prolog pour Java
    Bonjour,

    Je débute avec Prolog et Java et je ne parviens pas à faire quelque chose des listes...

    Mon problème est le suivant : je crée une liste [1|4] et je demande à Prolog si 2 est membre de cette liste mais le moteur répond que non.

    De même, si je demande au moteur d'énumérer les éléments de la liste en faisant member(X,[1|4]), je n'obtiens aucune réponse.

    Voici mon code Java, j'imagine que je construis mal mes listes :

    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
     
    //Construction de la liste
    IntegerTerm terme = new IntegerTerm("2");
    		Term[] lesTermes = { new IntegerTerm("1"), new IntegerTerm("4")};
    		CompoundTerm listeDesTermes = new CompoundTerm(TermConstants.listTag, lesTermes);
     
    //Construction de la question
    Term[]argumentsQuestion = {terme,listeDesTermes};
    		CompoundTerm question = newCompoundTerm("member", argumentsQuestion);
     
    //Execution de la question
    // Execution d'une requête sans variable
    		Goal goal = interpreter.prepareGoal(question);
    		try {
    			int rc = interpreter.execute(goal);
    			System.out.println("Evaluation de "+question.toString()+" : "+rc);
    			if ((rc == PrologCode.SUCCESS) || (rc == PrologCode.SUCCESS_LAST)) {
    				return "yes";
    			}
    		} catch (PrologException e) {
    			e.printStackTrace();
    		}
    		return "no";
    Merci d'avance de votre aide !

  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
    Par défaut
    Je ne connais pas du tout l'interface Java - GNU Prolog.
    Ce que je peux dire c'est que [1|4] n'est pas une "vraie" liste, c'est [1,4] qui en est une vraie :
    ?- member(X, [1|4]).

    X = 1 ? ;

    (16 ms) no
    | ?- member(X, [1,4]).

    X = 1 ? ;

    X = 4 ? ;

    no
    En Prolog les listes se définissent par
    Liste :== []
    Liste :== [Elem | Liste]
    La notation [Tete | Queue] est l' analogue de car cdr en Lisp
    Sous la forme [H|T] la liste [1,4] s'écrit [1 | [4]]
    "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

Discussions similaires

  1. Traitement des formulaires avec prolog
    Par salah001 dans le forum Prolog
    Réponses: 2
    Dernier message: 18/03/2015, 19h40
  2. Traitement des erreurs avec Tomcat
    Par ingdev dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 14/01/2009, 16h55
  3. traitement des dates avec java
    Par papoulouis dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 04/10/2008, 11h08
  4. [Xpath] Eviter le traitement des noeud avec même attribut
    Par kkwet30 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/02/2008, 14h02

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