Combinação Simples //Repositório JavaScript

Descrição

Combinação matemática simples em elementos de um array.
Criado: 2005.10.02

Código (Download)

//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/array/combine [rev. #1]

function combine(a, q){
    var n = a.length - 1, l = n - q + 1, x = 0, c = [], z = -1, p, j, d, i;
    if(q > n || q < 2) return c;
    for(p = [], i = q; p[--i] = i;);
    while(x <= l){
        for(c[++z] = [], j = -1; ++j < q; c[z][j] = a[p[j]]);
        if(++p[j - 1] > n)
            while(j--)
                if(!j && x++, (d = p[j]) < l + j){
                    while(j < q) p[j++] = ++d;
                    break;
                }
    }
    return c;
};

Exemplo (Exemplo)

<script type="text/javascript">
//<![CDATA[

var a = ["A", "B", "C", "D", "E", "F"], q = 4, j = combine(a, q);
document.write(
    "<h2>", a.join(" - "), " : ", q, " = ", j.length, "</h2>",
    j.join("<br />")
);

//]]>
</script>

Ajuda

combine(vetor: Array, n: Integer): Array
Efetua a combinação matemática, ou seja, todos os agrupamentos com determinado número de elementos possíveis de serem montados sem que haja um elemento repetido. A função retorna um array bidimensional, onde linha = combinação e coluna = elemento.
vetor
array cujos elementos serão combinados
n
quantidade de elementos em cada agrupamento

Ranque (Votos: 47)

3.68