Показать сообщение отдельно
  #32 (permalink)  
Старый 02.05.2018, 21:42
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Длина массива действительно ограничена, а от длины слова количество вариантов растёт экспоненциально.
Но можно лёгким движением руки превратить функцию в генератор, и получить столько значений сколько надо:
function* generate(arr, n, startIndex){
  for(var length = arr.length, i = Math.pow(length, n) - (startIndex||0), temp = new Array(n), j; i--;){
    j = n;
 
    while(j--){
      temp[j] = arr[i / Math.pow(length, j) % length | 0];
    }
 
    yield temp.join('');
  }
}
var generator = generate(['A','B','C','D','E'], 4);
alert(generator.next().value);
alert(generator.next().value);
Ограничены вы только временем.)
__________________
29375, 35
Ответить с цитированием