uzyskać wszystkie kombinacje dla ciągu
Próbuję utworzyć funkcję w JavaScript, która podając łańcuch zwróci tablicę wszystkich możliwych kombinacji liter, z których każda zostanie użyta najwyżej raz, zaczynając od najkrótszej. np. w przypadku ciągu ABC powróci:
A
B
C
AB
AC
ABC
Mogę użyć pętli w ten sposób:
for(i=0; i<string.length; i++) {
//add string[i]
}
for(i=0; i<string.length; i++) {
for(a=i; a<string.length; a++) {
//add string[i]+string[a]
}
}
for(i=0; i<string.length; i++) {
for(a=i; a<string.length; a++) {
for(b=a; b<string.length; b++) {
//add string[i]+string[a]+string[b]
}
}
}
Ale nie znam długości łańcucha, więc nie wiedziałbym, ile pętli użyć.
Jakieś pomysły?
Edycja: Nie pytam o permutacje, abc i acb nie powinny zostać zwrócone. Ważne jest również to, że najkrótszy jest pierwszy w tablicy.
To nie jest praca domowa. Jest to program do rozwiązania gry typu „light-out”.