Посчитать все возможные комбинации знаков, но без повторов

Есть код.


var arr = [];
var index = 0;

function recursive(istr, curstr, count) {
    count--;
    for (var i = 0; i < istr.length; i++) {
        var str = curstr + istr.charAt(i);
        if (count > 0) {
            recursive(istr, str, count);
        } else {
            console.log(str); // showing answers here
            arr[index++] = str; // or they are in the array here
        }
    }
}

function enumerate(str, n) {
    for (var i = 0; i < n; i++) {
        recursive(str, "", i + 1);
    }
}

enumerate("ABCD", 2);

Но нужно чтобы если выводило AD, DA - уже не создавалась и тд.


Ответы (1 шт):

Автор решения: wyrme

let pairs = (arr) => arr.map( (v, i) => arr.slice(i + 1).map(w => [v, w]) ).flat();

console.log(pairs([1, 2, 3, 4, 5]));

→ Ссылка