Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 02.05.2018, 18:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

j0hnik,
<script>
var arr = ['A','B','C','D','E'];
function fn(e, k) {
    for (var f = [], c = e.length, g = 0;; g++) {
        var b = g.toString(c);
        if (b.length > k) break;
        b = b.padStart(k,"0").replace(/./g, d => (d = parseInt(d, c),e[d]));
        f.push(b);
    }
    return f;
};
document.write(fn(arr, 4).join('<br>'));
  </script>
Ответить с цитированием
  #22 (permalink)  
Старый 02.05.2018, 18:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

toString --- поэтому длина массива не более 36, на всякий ...
Ответить с цитированием
  #23 (permalink)  
Старый 02.05.2018, 18:49
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
Наверное есть более оптимальный алгоритм

d = parseInt(d, c) - вот это не гуд
вдруг
var arr = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&`.split('');
Ответить с цитированием
  #24 (permalink)  
Старый 02.05.2018, 18:56
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
Я в зал, приду напишу что нибудь полезное (если придумаю )
Ответить с цитированием
  #25 (permalink)  
Старый 02.05.2018, 19:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от j0hnik
вдруг
Сообщение от рони
toString --- поэтому длина массива не более 36, на всякий ...
любой бред длиной меньше 36.
Ответить с цитированием
  #26 (permalink)  
Старый 02.05.2018, 20:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Можно было бы ограничиться рекурсивной переделкой варианта j0hnik:
function generate(arr, i, value, result){
  if(!result){
    return generate(arr, i, '', []);
  }

  if(!i--) {	
    return result.push(value);
  };

  for(var k = 0; k < arr.length; k++){
    generate(arr, i, value + arr[k], result);
  }

  return result
}

console.log(generate(['A','B','C','D','E'], 4))

Но на самом деле тут просто нужно добавить капельку математики:
function generate(arr, n){
  var length = arr.length,
      result = new Array(Math.pow(length, n));

  for(var i = result.length, temp = new Array(n), j; i--;){
    j = n;

    while(j--){
      temp[j] = arr[i / Math.pow(length, j) % length | 0];
    }

    result[i] = temp.join('');
  }
  
  return result
}
console.log(generate(['A','B','C','D','E'], 4));
__________________
29375, 35

Последний раз редактировалось Aetae, 02.05.2018 в 23:41.
Ответить с цитированием
  #27 (permalink)  
Старый 02.05.2018, 20:56
Интересующийся
Отправить личное сообщение для VSEM-DOBRA Посмотреть профиль Найти все сообщения от VSEM-DOBRA
 
Регистрация: 01.10.2017
Сообщений: 20

Aetae,
j0hnik,
рони,

спасибо вам что помогаете,

взял вот этот массив,

var arr = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&`.split('');


попробовал подбирать на лету, потому что массив засоряет память
до 6 символов в принципе реально подбирается.

как думаете реально до 8 символов?
Ответить с цитированием
  #28 (permalink)  
Старый 02.05.2018, 21:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от VSEM-DOBRA
потому что массив засоряет память
может вам массив и не нужен? получили строку, проверили, сгенерировали следующий вариант.
Ответить с цитированием
  #29 (permalink)  
Старый 02.05.2018, 21:31
Интересующийся
Отправить личное сообщение для VSEM-DOBRA Посмотреть профиль Найти все сообщения от VSEM-DOBRA
 
Регистрация: 01.10.2017
Сообщений: 20

рони,
я и говорю что от этого уже отошел, теперь во время уперся =(
Ответить с цитированием
  #30 (permalink)  
Старый 02.05.2018, 21:34
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

VSEM-DOBRA,
времени все равно много займет, зависит от проца и самого пароля, тут еще есть куда ускоряться!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как обновить данные счетчика количества символов в input prog77 jQuery 4 08.07.2017 16:04
Контроль количества вводимых в форму символов y0uix Events/DOM/Window 4 22.10.2013 19:12
Можно ли узнать полный путь изображения в jquery pautinaweb jQuery 1 30.01.2013 23:39
Ограничить количество символов в textarea iNfantry jQuery 2 14.05.2012 11:35
Редактор TinyMCE не отправляет много русских символов cobria2 Общие вопросы Javascript 0 09.05.2011 00:46