получить все комбинации для строки
Я пытаюсь создать в JavaScript функцию, которая с заданной строкой будет возвращать массив всех возможных комбинаций букв, каждая из которых используется не более одного раза, начиная с самой короткой. например, для строки ABC она вернет:
A
B
C
AB
AC
ABC
Я мог бы использовать циклы так:
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]
}
}
}
Но я не знаю длину строки, поэтому не знаю, сколько циклов использовать.
Есть идеи?
Изменить: я не прошу перестановок, abc и acb не должны быть оба возвращены. Также важно, чтобы кратчайший был первым в массиве.
Это не домашнее задание. Это программа для решения проблемы "выключения света". Тип игры.