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 :

Liste : suppression de variables libres


Sujet :

Prolog

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 24
    Points : 8
    Points
    8
    Par défaut Liste : suppression de variables libres
    Bonjour !

    Voilà j'ai deux listes qui contiennent des variables liées et d'autres libres.
    Je fais l'union des deux, et je souhaitrai supprimer toutes les variables libres. Comment puis-je procéder ?

    Voici un extrait de mon code :

    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
    32
    33
    init(Tab) :-
        Tab =
        [
            E11, E12, E13, E14,
            E21, E22, E23, E24,
            E31, E32, E33, E34,
            E41, E42, E43, E44
        ].
     
    fill(Tab) :-
        Tab =
        [
            _,4,3,_, 
            1,_,_,2, 
            _,_,1,_, 
            3,_,_,4 
        ].
     
    search_solution(Tab) :-
        Tab =
        [
            E11, E12, E13, E14,
            E21, E22, E23, E24,
            E31, E32, E33, E34,
            E41, E42, E43, E44
        ],
     
        L1 = [ E11, E12, E13, E14 ],
        C1 = [ E11, E21, E31, E41 ],
        M1 = [ E11, E12, E21, E22 ],
     
        append(L1,C1,RES),
        print(RES),nl.

    Sortie : [_G279,4,3,_G288,_G279,1,_G303,3]
    Ici, je souhaiterai que la liste RES ne contienne que 4, 3 et 1.

    J'ai bien penser à utiliser list_to_set, mais le problème est que l'utilisation de ce prédicat lie la variable E11 à la première valeur de la liste obtenue, soit 4.

    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
    En SWI-Prolog tu peux ecrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    purge_list :-
    	A = [_G279,4,3,_G288,_G279,1,_G303,3],
    	include(nonvar, A, L),
    	writeln(L).
    Réponse :
    ?- purge_list.
    [4,3,1,3]
    true.
    "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
    En attente de confirmation mail
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bonjour et merci de ta réponse rapide.

    Néanmoins, je pense qu'il y a un problème. Comment je peux affecter à A les valeurs de la liste qui sont libre si je ne connais pas leur nom ? Ils changeront à chaque fois non ?

    Merci.

  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
    Bonjour

    Je ne comprends pas ta requete, tu veux supprimer les variables libres et maintenant tu veux garder le nom de ces variables.
    Il faut savoir qu'à l'affichage, dans un programme, tu n'auras jamais écrit [A,B,C] mais par example [_G151296,_G151299,_G151302].
    "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. Réponses: 4
    Dernier message: 28/11/2006, 10h50
  2. Liste avec les variables anonymes
    Par bakhoucha dans le forum Prolog
    Réponses: 11
    Dernier message: 04/10/2006, 18h04
  3. imprimer une facture avec liste de produits variables
    Par ouldfella dans le forum Delphi
    Réponses: 4
    Dernier message: 31/07/2006, 00h10
  4. Problème avec des listes et des variables
    Par Knuckles dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2006, 19h24
  5. Listes déroulantes pour variables dans un état
    Par Oluha dans le forum Access
    Réponses: 6
    Dernier message: 06/02/2006, 17h09

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