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

Algorithmes et structures de données Discussion :

Liste de tous les arrangements possible d'un tableau à n entrées


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Par défaut Liste de tous les arrangements possible d'un tableau à n entrées
    Bonjour,

    J'ai fait des recherches dans le forum, mais je n'ai pas trouvé ce que je voulais, où alors je n'ai pas tout compris

    Je voudrais un programme qui m'affiche toutes les combinaisons possible sur une table à n entrées. Quand je dis tout, c'est tout. L'ordre est important (AB <> BA), et je peux prendre de 1 à n élément, mais il n'y a pas de répétition.

    Un petit exemple facile sur un tableau à 3 entrées [A B C]. Cela donnerait :
    A
    B
    C
    AB
    AC
    BA
    BC
    CA
    CB
    ABC
    ACB
    BAC
    BCA
    CAB
    CBA
    => 15 possiblités
    ou A(1,3)+A(2,3)+A(3,3)=3+6+6=15

    Une idée ?

    merci
    Yves

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Voici un script python facilement traduisible.
    L'idée est que si ton ensemble est au départ E={A,B,C}, ce que tu cherches c'est toutes les injections de {1} dans E
    réuni avec toutes les injections de {1,2} dans E
    réuni avec toutes les injections de {1,2,3} dans E
    Cela donne, en version récursive:
    Code python : 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
    # -*- coding: cp1252 -*-
     
    # générer les injections de {1,2,..,p} dans E représenté comme liste
    def GenInj(p,E):
        if p==1:
            return [[x] for x in E] #cas où p=1
        else:
            R=[]
            for x in E:
                F=E[:] # recopier E
                F.remove(x) # enlever x
                PGI=GenInj(p-1,F) # appel récursif
                Cx=PGI[:] # recopie du résultat
                for A in Cx:
                    A.append(x)# recombiner avec x tous les éléments
                R+=Cx # Ajouter les résultats obtenus
        return R
     
    def main():
        E=['a','b','c']
        R=[]
        for i in range(len(E)+1):
            R+=GenInj(i,E)
        print len(R)
        print R
     
     
    if __name__ == '__main__':
        main()
    Résultat:
    15
    [['a'], ['b'], ['c'], ['b', 'a'], ['c', 'a'], ['a', 'b'], ['c', 'b'], ['a', 'c'], ['b', 'c'], ['c', 'b', 'a'], ['b', 'c', 'a'], ['c', 'a', 'b'], ['a', 'c', 'b'], ['b', 'a', 'c'], ['a', 'b', 'c']]
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/06/2013, 01h47
  2. Réponses: 7
    Dernier message: 23/01/2013, 10h54
  3. trouver tous les arrangement possible d'une liste
    Par ju_bicycle dans le forum Général Python
    Réponses: 2
    Dernier message: 31/01/2012, 14h52
  4. Connaître tous les arrangements possibles
    Par marsupio49 dans le forum Langage
    Réponses: 21
    Dernier message: 19/06/2008, 15h05
  5. Liste de tous les évènements possibles sur un formulaire
    Par Zhebulon dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/06/2007, 08h54

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