как найти декартово произведение одинаковых массивов? (проблема рукопожатия).
Я нашел функции cart_prod () и cartesianProductOf (), которые работают нормально, но когда я делаю:
cart_prod (list1, list1)
вместо того, чтобы давать мне массив размера (n ^ 2 + n) / 2, я получаю массив размером n ^ 2. В основном это возвращает мне все перестановки вместо комбинаций. Я пересекаю два списка, потому что это похоже на рукопожатие.
вот функция cartesianProductOf ():
function cartesianProductOf() {
//better cartesian function
//usage: cartesianProductOf([1,2],[3,4],[5,6]) returns 8 arrays [1,3,6],[1,3,5] and so on.
return Array.prototype.reduce.call(arguments, function(a, b) {
var ret = [];
a.forEach(function(a) {
b.forEach(function(b) {
ret.push(a.concat([b]));
});
});
return ret;
}, [[]]);
}