Comment obtenir toutes les combinaisons possibles d'une liste d'éléments?

J'ai une liste de 15 numéros, et j'ai besoin d'écrire du code qui produit tous les 32,768 combinaisons de ces nombres.

J'ai trouvé un peu de code (par Googler) qui, apparemment, fait ce que je cherche, mais j'ai trouvé le code assez opaque et me méfie de l'utiliser. En Plus j'ai le sentiment il doit y avoir une solution plus élégante.

La seule chose qui me vient à l'esprit serait de simplement faire une boucle par la décimale des entiers 1-32768 et la convertir en binaire, et l'utilisation de la représentation binaire comme un filtre pour sélectionner les numéros appropriés.

Personne ne sait d'une meilleure façon? À l'aide de map(), peut-être?

  • Les lecteurs sont priés de noter que si les éléments de la liste sont unique est un élément extrêmement important de la considération, de nombreux algorithmes sera alors une surestimation de certains sous-ensemble (par exemple 'abccc' -> [", 'a', 'b', 'c', 'c', 'c', 'ca', 'ca', 'ac', ...]. Une simple solution de contournement est de pousser tous les éléments dans un ensemble avant d'obtenir leurs permutations.
InformationsquelleAutor Ben | 2009-01-21