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