Permutação Simples //Repositório JavaScript
Descrição
Permutação simples de elementos em um array.
Criado: 2005.08.08 - Modificado 2005.11.28
Criado: 2005.08.08 - Modificado 2005.11.28
Código (Download)
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/array/permute [rev. #1]
permute = function(v, m){
for(var p = -1, j, k, f, r, l = v.length, q = 1, i = l + 1; --i; q *= i);
for(x = [new Array(l), new Array(l), new Array(l), new Array(l)], j = q, k = l + 1, i = -1;
++i < l; x[2][i] = i, x[1][i] = x[0][i] = j /= --k);
for(r = new Array(q); ++p < q;)
for(r[p] = new Array(l), i = -1; ++i < l; !--x[1][i] && (x[1][i] = x[0][i],
x[2][i] = (x[2][i] + 1) % l), r[p][i] = m ? x[3][i] : v[x[3][i]])
for(x[3][i] = x[2][i], f = 0; !f; f = !f)
for(j = i; j; x[3][--j] == x[2][i] && (x[3][i] = x[2][i] = (x[2][i] + 1) % l, f = 1));
return r;
};
Exemplo (Exemplo)
<script type="text/javascript">
//<![CDATA[
var a = ["A", "B", "C", "D"], j = permute(a);
document.write(
"<h2>", a.join(" - "), " = ", j.length, "</h2>",
j.join("<br />")
);
//]]>
</script>
Ajuda
- permute(vetor: Array, [usarIndice: Boolean = false]): Array
-
A função retorna um array bidimensional (onde linha = agrupamento e coluna = elemento), contendo todas as possibilidades de se agrupar os elementos sem repetí-los.
- vetor
- array que será permutado
- usarIndice
- define o tipo de retorno da função, se true, retorna apenas um "mapa" contendo os índices do vetor, se false, usa os valores do próprio vetor
Ranque (Votos: 63)
2.30