Я пытаюсь получить эти перестановки с помощью цикла for.
2 элемента {a, b} результат:
a, b, ab
3 элемента {a, b, c} результат:
a, b, c, ab, ac, bc, abc
4 элемента {a, b, c, d} результат:
a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, abcd
5 элементов {a, b, c, d, e} результат:
a, b, c, d, e, ab, ac, ad, ae, bc, bd, be, cd, ce, de, abc, abd, abe, acd, ace, ade, bcd, bce, bde, cde, abcd, abce, abde, acde, bcde, abcde
и т. Д.
Я сделал это в jsfiddle , укладывая for
петли один за другим, чтобы поймать систематическую структуру:
var a, b, c;
a = ['a', 'b', 'c', 'd', 'e', 'f'];
b = [];
for(i=0; i < a.length; i++){
b[b.length] = a[i];
}
for(i=1; i < a.length; i++){
b[b.length] = b[0]+b[i];
}
for(i=2; i < a.length; i++){
b[b.length] = b[1]+b[i];
}
for(i=3; i < a.length; i++){
b[b.length] = b[2]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[3]+b[i];
}
for(i=2; i < a.length; i++){
b[b.length] = b[5]+b[i];
}
for(i=3; i < a.length; i++){
b[b.length] = b[6]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[7]+b[i];
}
for(i=3; i < a.length; i++){
b[b.length] = b[9]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[10]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[12]+b[i];
}
for(i=3; i < a.length; i++){
b[b.length] = b[15]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[16]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[18]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[21]+b[i];
}
for(i=4; i < a.length; i++){
b[b.length] = b[25]+b[i];
}