gpt4 book ai didi

javascript - 在 javascript 中将所有分区查找为大小为 2 的集合

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:40 25 4
gpt4 key购买 nike

我正在尝试编写一个执行以下操作的函数:

> partitions([a,b,c,d])

< [
[[a,b],[c,d]],
[[a,c],[b,d]],
[[a,d],[b,c]]
]

即它找到所有大小为 2 的分区。

目前我正在尝试递归地执行此操作:在每次调用时生成一个对列表,并且对于生成的每一对,在删除该对的情况下再次调用列表中的方法。这有效,但会生成重复项。删除重复项需要比较生成的分区中的每个元素,这非常慢。

我想知道是否有更聪明的方法来做到这一点。

最佳答案

只需获取所有项目的组合并过滤掉所有不需要的,就像这样

function getTwoCombinations(array) {
var i, j, result = [];
for (i = 0; i < array.length; i += 1) {
for (j = i + 1; j < array.length; j += 1) {
result.push([array[i], array[j]]);
}
}
return result;
}

var result = getTwoCombinations(getTwoCombinations(["a", "b", "c", "d"])).
filter(function(items) {
return items[0].every(function(item) {
return !(items[1].indexOf(item) + 1);
});
});

console.log(result);

输出

[ [ [ 'a', 'b' ], [ 'c', 'd' ] ],
[ [ 'a', 'c' ], [ 'b', 'd' ] ],
[ [ 'a', 'd' ], [ 'b', 'c' ] ] ]

关于javascript - 在 javascript 中将所有分区查找为大小为 2 的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com