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 :

Enumérer toutes les possibilités


Sujet :

Prolog

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut Enumérer toutes les possibilités
    Bonjour a tout le monde

    voila j'ai un projet en prolog et j'aurai besoin de votre aide pour écrire une fonction
    qui peut énumérer toutes les possibilité je m'explique

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fct([1,2,3],R).
    R=[1];
    R=[2];
    R=[3];
    R=[1,2];
    R=[1,3]
    R=[2,3];
    R=[1,2,3];

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    ce que tu souhaites s'appelle une partitions de [1,2,3]... pour cela il suffit de vérifier que tout élément de R est dans [1,2,3]

    nb: attention aux doublons


    essaies de coder deux fonctionnalités :
    + tester si tous les éléments de R sont distincts
    + tester si R est inclus dans [1,2,3]
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Merci pour ta reponse

    + tester si tous les éléments de R sont distincts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    distinct([]).
    distinct([X1|X2]):-
            not(member(X1,X2)),
            distinct(X2).
    j'ai plus du mal pour tester si R est inclus dans [1,2,3] si tu peut m'aider

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par psyko72
    j'ai plus du mal pour tester si R est inclus dans [1,2,3] si tu peut m'aider

    un truc du genre... (code pas testé bien sur, faut que tu bosses )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    inclus([],L).
    inclus([Hd|Tl],L) :-
        member(Hd,L),
        inclus(Tl,L).
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    voila sa marche mais y a des doublon si tu peut m'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    inclus(_,[]).
    inclus(L,[Hd|Tl]) :-
            member(Hd,L),
            select(Hd,L,Y),
            inclus(Y,Tl).
    resultat de inclut([1,2,3],X).

    X = [] ;
    X = [1] ;
    X = [1, 2] ;
    X = [1, 2, 3] ;
    X = [1, 3] ;
    X = [1, 3, 2] ;
    X = [2] ;
    X = [2, 1] ;
    X = [2, 1, 3] ;
    X = [2, 3] ;
    X = [2, 3, 1] ;
    X = [3] ;
    X = [3, 1] ;
    X = [3, 1, 2] ;
    X = [3, 2] ;
    X = [3, 2, 1] ;
    No

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut



    penses à cliquer sur
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    ben non c'est pas encore resolu il faut eliminer les doublons
    je travaille decu si vous pouvez m aider

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par psyko72
    ben non c'est pas encore resolu il faut eliminer les doublons
    je travaille decu si vous pouvez m aider

    ben tu ajoutes la contrainte que la liste doit etre triée

    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  9. #9
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    La politique ici, c'est de laisser les visiteurs réféchir par eux-mêmes et ne pas trop mâcher le travail. Par contre, pour des problèmes simples (comme celui là), il vaut mieux éviter de dériver vers des solutions trop alambiquées.

    Là, je suis au travail, j'ai fini ma journée (donc je peux répondre) mais je n'ai pas de quoi exécuter Prolog (donc je ne peux pas tester).

    Néanmoins, je pense que la solution suivante devrait marcher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fct([T|_],[T]).
    fct([T|Q],R) :-
      fct(Q,Q1),
      fct1(T,Q1,R).
     
    fct1(_,Q,Q).
    fct1(T,Q,[T|Q]).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

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

Discussions similaires

  1. Algo pour un pseudo T9 : toute les possibilité de chaine entre abc et def
    Par arnaudperfect dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 04/11/2008, 13h42
  2. Lister toutes les possibilités de casse d'une chaîne
    Par nerok dans le forum Windows Forms
    Réponses: 20
    Dernier message: 15/06/2007, 11h11
  3. Permutation - Afficher toutes les possibilitées
    Par margagn dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 15/05/2007, 01h40
  4. Réponses: 15
    Dernier message: 03/04/2007, 12h51
  5. [VB] Calcul de toute les possibilité
    Par Stan Trinity dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/11/2005, 15h31

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