Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Полный перебор символов (https://javascript.ru/forum/misc/73637-polnyjj-perebor-simvolov.html)

VSEM-DOBRA 02.05.2018 15:47

Полный перебор символов
 
Уважаемые знатоки, подскажите пожалуйста как сгенерировать и запушить в массив строку состоящую из символов массива arr

var arr = ['A','B','C','D','E']


должно получится

var comb = [AAAA, AAAB, AAAC..... AABA, AABB....]

итд пока все не закончится строкой EEEE

в общем нужен массив строк длинною в 4 символа все различно возможных комбинаций.

рони 02.05.2018 16:00

VSEM-DOBRA,
перебор вариантов es6

VSEM-DOBRA 02.05.2018 16:04

рони,
Это совсем другое. тут комбинаций будет намного больше, т.к. символ может использоваться сколько угодно раз, а не один.

j0hnik 02.05.2018 16:09

VSEM-DOBRA,
Нужен массив комбинаций наподобие брутфорса пароля только из символов вашего arr?

рони 02.05.2018 16:14

Цитата:

Сообщение от VSEM-DOBRA
Это совсем другое

это то что вам нужно, будет массив из 625 строк от AAAA до EEEE

VSEM-DOBRA 02.05.2018 16:22

j0hnik,
Да Все верно =) Хелп
рони,
не работает

<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  </head>

<body>
<script>
function combinator(matrix){
    return matrix.reduceRight(function(combination, x){
        var result = [];
        [...x].forEach(function(a){
            [...combination].forEach(function(b){
                result.push(a + b);
            });
        });
        return result;
    });
};


document.write(
    JSON.stringify(combinator(['A','B','C','D','E']))
);
</script>

</body>
</html>


=(((

рони 02.05.2018 16:24

VSEM-DOBRA,
<script>
"use strict"
var arr = ['A','B','C','D','E'];
function combinator(matrix){
    return matrix.reduceRight(function(combination, x){
        var result = [];
        [...x].forEach(function(a){
            [...combination].forEach(function(b){
                result.push(a + b);
            });
        });
        return result;
    });
};


document.write(
    JSON.stringify(combinator(Array.from({length : 4}, () => arr )))
);
</script>

j0hnik 02.05.2018 16:25

Первое что приходит в голову это циклы, но будет 3 вложенных цикла, не знаю насколько правильный это ход, но производительность будет максимальное (я так думаю). м.б рони возразит?

j0hnik 02.05.2018 16:27

рони,
Красивый код =) ;)

Aetae 02.05.2018 16:37

По мне так жуть, яб посмотрел как чувак преподу объясняет как он дошёл до такого извращения вместо простых человеческих циклов.)


Часовой пояс GMT +3, время: 15:22.