UDF > Array >


_ArrayCombinations

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 = ""] )

Paramètres

$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

Valeur de retour

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

Remarques

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.

En relation

_ArrayPermute

Exemple

; 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