Заполненный массив уникальными элементами - как его скопировать, чтобы получить все возможные заказы? - PullRequest
1 голос
/ 21 июня 2020

Это мой первый вопрос, я думаю, что ответ будет небольшим фрагментом кода.

Допустим, у меня есть заполненный массив любой длины с уникальными элементами:

let a = [A,B,C]

Мой вопрос: как я могу обработать массив, чтобы у меня был список или массивы x, которые показывают все возможные порядки для этих элементов массива выше, например:

A,B,C
A,C,B
B,A,C
B,C,A
C,B,A
C,A,B

У меня действительно нет идею и пока пытался поискать в сети.

Спасибо за ответы!

1 Ответ

0 голосов
/ 21 июня 2020

Рекурсивная идея такова:

function order(list, ans){
    let size = list.length;
    if(size == 0){
        console.log(ans);
        return;
    }
    for(var i = 0; i < size; i++){
        let first = list.shift();
        order(list, ans + `${first},`);
        list.push(first);
    }
}

По сути, для каждого элемента вы устанавливаете его как первый и рекурсивно делаете то же самое с остальной частью списка.

...