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 :

Problème de Listes Prolog


Sujet :

Prolog

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut Problème de Listes Prolog
    bonjour à tous et à toutes,
    Voilà j'ai la base de faits suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    fondement(analyse,3).
    fondement(algorithmique,4).
    fondement(géométrie,2).
    culture(societe,3).
    culture(communication,5).
    langue(anglais,4).
    langue(espagnol,5).
    technique(programmation,3).
    technique(base-de-données,4).
    technique(soudure,4).
    à partir de là j'ai défini deux prédicats s1 et s2 pour semestre1 et semestre2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    s1([X,Y,Z]):-fondement(X,A),technique(Y,B),autre(Z,D).
    s2([X2,Y2,Z2]):-fondement(X2,A1),technique(Y2,B1),autre(Z2,D2).
    (ou autre est l'addition des cours langue et culture)
    Jusque là tout fonctionne parfaitement.
    Maintenant je veux définir un prédicat année(s1,s2) qui se compose de deux semestres s1 et s2 et là je code ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    année([s1],[s2]).
    Et là ça ne marche pas.
    comment fais - on dans ce cas là ou l'on veut utiliser deux listes qui fonctionnent pour en créer une autre, car quand je teste s1 et s2 ça marche.
    Merçi de votre aide .
    A +

  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
    Effectivement, ça ne peut pas marcher.
    D'abord il y a un accent dans le nopm du prédicat
    Ensuite s1 s2 ont des initiales minuscules, ce sont donc des atomes et pas des variables.
    Maintenant, ce que tu peux faire c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    annee(X,Y) :-
    	s1(X),
    	s2(Y),
    	X \= Y.
    Mais ce n'est peut-être pas ce que tu recherches, celà va te fournir toutes les combinaisons différentes possibles de cours.
    "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
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Effectivement, ça ne peut pas marcher.
    D'abord il y a un accent dans le nopm du prédicat
    Ensuite s1 s2 ont des initiales minuscules, ce sont donc des atomes et pas des variables.
    Maintenant, ce que tu peux faire c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    annee(X,Y) :-
    	s1(X),
    	s2(Y),
    	X \= Y.
    Mais ce n'est peut-être pas ce que tu recherches, celà va te fournir toutes les combinaisons différentes possibles de cours.
    Merçi pour ta réponse j'ai essayé ceçi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    s1([X,Y,Z]):-fondement(X,A),technique(Y,B),autre(Z,D).
    s2([X2,Y2,Z2]):-fondement(X2,A2),technique(Y2,B2),autre(Z2,D2).
    annee([X],[Y]):-s1([X,Y,Z]),s2([X2,Y2,Z2]).
    Je ne comprends pas car les prédicats s1 et s2 fonctionnent, annee à l'exécution me reponds "no" alors que je mets les mêmes valeurs que pour s1 et s2.
    Si tu peux m'aider merçi.

  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
    Bizarre, bizarre, tu peux donner le code de "autre"
    Moi j'ai pris pour autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    autre(X, Y) :-
    	culture(X,Y);langue(X,Y).
    donc autre c'est soit culture, soit langue.
    Avec tes autres prédicats j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    6 ?- annee([A],[ B]).
    A = analyse,
    B = programmation ;
    A = analyse,
    B = programmation ;
    A = analyse,
    B = programmation 
    ....
    "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
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Bizarre, bizarre, tu peux donner le code de "autre"
    Moi j'ai pris pour autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    autre(X, Y) :-
    	culture(X,Y);langue(X,Y).
    donc autre c'est soit culture, soit langue.
    Avec tes autres prédicats j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    6 ?- annee([A],[ B]).
    A = analyse,
    B = programmation ;
    A = analyse,
    B = programmation ;
    A = analyse,
    B = programmation 
    ....
    Merçi pour ta réponse, le code pour autre est bien celui que tu indiques : soit langue ou culture bravo !
    Pour ce qui de lancer le prédicat annee en effet si je lance :

    | ?- annee([analyse],[programmation]).

    J'ai une multitude de réponses :
    true ? ;

    true ? ;

    true ? ;

    true ? ;
    en boucle apparement ...
    Pour moi le but est d'unifier annee([X],[Y]) avec

    s1([X,Y,Z]) et s2([X2,Y2,Z2]). plus précisément unifier [X] avec
    [X,T,Z] et unifier [Y] avec [X2,Y2,Z2].
    Et là je ne sais pas si l'unification est possible car en lançant :

    annee([analyse,programmation,anglais],[algorithmique,soudure,espagnol]).

    prolog me réponds "no"
    Merçi encore
    A +

  6. #6
    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
    D'accord, il suffit de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    annee(X,Y):-s1(X),s2(Y).
    On obtient :
    2 ?- annee([analyse,programmation,anglais],[algorithmique,soudure,espagnol]).
    true.
    Tu as aussi :
    3 ?- annee(X,Y).
    X = [analyse, programmation, societe],
    Y = [analyse, programmation, societe] ;
    X = [analyse, programmation, societe],
    Y = [analyse, programmation, communication] ;
    X = [analyse, programmation, societe],
    Y = [analyse, programmation, anglais] ;
    X = [analyse, programmation, societe],
    Y = [analyse, programmation, espagnol] ;
    X = [analyse, programmation, societe],
    Y = [analyse, base-de-données, societe] ;
    X = [analyse, programmation, societe],
    Y = [analyse, base-de-données, communication] ;
    X = [analyse, programmation, societe],
    Y = [analyse, base-de-données, anglais] ;
    X = [analyse, programmation, societe],
    Y = [analyse, base-de-données, espagnol]
    ........
    "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

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut Merçi
    Citation Envoyé par Trap D Voir le message
    D'accord, il suffit de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    annee(X,Y):-s1(X),s2(Y).
    On obtient :
    Tu as aussi :

    Merçi en effet ça marche.
    A +

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

Discussions similaires

  1. Problème liste Prolog
    Par billouth dans le forum Prolog
    Réponses: 5
    Dernier message: 17/12/2006, 11h28
  2. Problème de liste déroulante et js...
    Par Empty_body dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/03/2006, 10h44
  3. [MySQL] Problème de listes déroulantes liées avec requêtes sql
    Par richton95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/12/2005, 16h04
  4. Problème avec liste déroulante
    Par Invité dans le forum IHM
    Réponses: 2
    Dernier message: 14/12/2005, 21h04
  5. Problème avec listes liées entre elles et bouton "précé
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2005, 15h10

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