Probé esto:
caracteres = ["A", "B", "C", "D", "E", "F", "G", "H"];
resultados = [];
// Función recursiva para generar permutaciones
function generarPermutaciones(prefijo, disponibles) {
if (disponibles.length == 0) {
resultados.push(prefijo);
return;
}
for (i = disponibles.length - 1; i >= 0; i--) { // Iteramos en reversa para evitar efectos inesperados
generarPermutaciones(prefijo + disponibles, disponibles.slice(0, i).concat(disponibles.slice(i + 1)));
}
}
// Iniciar la generación de permutaciones
generarPermutaciones("", caracteres);
// Mostrar resultados en la salida
for (j = 0; j < resultados.length; j++) {
trace(resultados[j]);
}
El resultado fue:
A,B,C,D,E,F,G,HA,B,C,D,E,F,GA,B,C,D,E,FA,B,C,D,EA,B,C,DA,B,CA,BA
En cuanto a tu posterior idea, algunas cosas las entiendo, otras no.
No sé bien qué es una matriz array, nunca usé, pero podría hacer algo como:
Permutaciones = [];
PosicionInicial = [];
PosicionFinal = [];
Costo= [];
De modo que los datos del elemento 0 en permutaciones están en la misma posición en otros array, sólo que no entiendo la idea, a ver ejemplos:
Permutaciones = ["ABCDEFGH", "ABCDEFHG"...];
PosicionInicial = ["A", "A"...];
PosicionFinal = ["H", "G"...];
Costo= [10, 9...]; <- inventado
No entiendo para qué grabas la posición inicial y final si ya lo tienes en Permutaciones.