Retourne le tableau des combinaisons de taille donnée de l'ensemble des éléments d'un tableau
#include <Array.au3>
_ArrayCombinations ( Const ByRef $aArray, $iSet [, $sDelimiter = ""] )
$aArray | Le tableau à utiliser |
$iSet | Taille des combinaisons d'éléments |
$sDelimiter | [optionnel] Séparateur à utiliser dans les chaînes de résultats, "" par défaut pour aucun séparateur |
Succés: | Retourne un tableau de combinaisons Le premier élément ($array[0]) contient le nombre de chaînes retournées. Les éléments restant ($array[1], $array[2], etc...) contiennent les différentes combinaisons. |
Échec: | Définit @error <> 0. |
@error: | 1 - $aArray n'est pas un tableau 2 - $aArray n'est pas un tableau 1D |
Le tableau d'entrée doit être de base 0, c.a.d. qu'il ne doit pas y avoir le nombre d'éléments en position [0]. Basé sur l'algorithme de Kenneth H. Rosen.
Note du traducteur:
Une combinaison de n éléments pris p à p (p compris entre 0 et n), ne tient pas compte de l'ordre des éléments et ne contient pas de répétition du même élément. Par exemple, les combinaisons des éléments a,b,c,d pris 2 à 2 sont:
{a,b}, {a,c}, {a,d}, {b,c}, {b,d}, {c,d}.
Leur nombre est: C(n,p) = n/p * (n-1)/(p-1) * ... * (n-p+1)/1.
Dans un jeu de cartes, une main est une combinaison, un tirage simultané de plusieurs boules dans une urne, aussi, le tiercé dans le désordre aussi.
; Déclare un tableau 1D, et crée un tableau montrant les combinaisons possibles #include <Array.au3> Local $aArray[5] = [1, 2, 3, 4, 5] For $i = 1 To UBound($aArray) Local $aArrayCombo = _ArrayCombinations($aArray, $i, ",") _ArrayDisplay($aArrayCombo, "iSet = " & String($i)) Next