【发布时间】:2011-12-26 04:42:08
【问题描述】:
如何找到相同数组的笛卡尔积? (握手问题)。
我发现 cart_prod() 和 cartesianProductOf() 函数可以正常工作,但是当我这样做时:
cart_prod(list1, list1)
我没有给我一个大小为 (n^2+n)/2 的数组,而是得到一个大小为 n^2 的数组。基本上它返回给我所有的排列而不是组合。我跨越了两个列表,因为这有点像握手问题。
这里是笛卡尔ProductOf()函数:
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;
}, [[]]);
}
【问题讨论】:
标签: javascript iterator