Looking for ruby Answers? Try Ask4KnowledgeBase
Looking for ruby Keywords? Try Ask4Keywords

Ruby Language Obtenez toutes les combinaisons / permutations d'un tableau


Exemple

La méthode de permutation , lorsqu'elle est appelée avec un bloc, produit un tableau à deux dimensions constitué de toutes les séquences ordonnées d'une collection de nombres.

Si cette méthode est appelée sans bloc, elle retournera un enumerator . Pour convertir en tableau, appelez la méthode to_a .

Exemple Résultat
[1,2,3].permutation #<Enumerator: [1,2,3]:permutation
[1,2,3].permutation.to_a [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
[1,2,3].permutation(2).to_a [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
[1,2,3].permutation(4).to_a [] -> Pas de permutations de longueur 4

Par contre, la méthode de combination , lorsqu'elle est appelée avec un bloc, produit un tableau à deux dimensions composé de toutes les séquences d'une collection de nombres. Contrairement à la permutation, l'ordre est ignoré dans les combinaisons. Par exemple, [1,2,3] est identique à [3,2,1]

Exemple Résultat
[1,2,3].combination(1) #<Enumerator: [1,2,3]:combination
[1,2,3].combination(1).to_a [[1],[2],[3]]
[1,2,3].combination(3).to_a [[1,2,3]]
[1,2,3].combination(4).to_a [] -> Aucune combinaison de longueur 4

L'appel de la méthode de combinaison seule aboutira à un énumérateur. Pour obtenir un tableau, appelez la méthode to_a .

Les méthodes repeated_combination et repeated_permutation sont similaires, sauf que le même élément peut être répété plusieurs fois.

Par exemple, les séquences [1,1] , [1,3,3,1] , [3,3,3] ne seraient pas valides dans les combinaisons et les permutations régulières.

Exemple # Combos
[1,2,3].combination(3).to_a.length 1
[1,2,3].repeated_combination(3).to_a.length 6
[1,2,3,4,5].combination(5).to_a.length 1
[1,2,3].repeated_combination(5).to_a.length 126