gpt4 book ai didi

javascript - 从长度为 6 的数组中返回 3 个组合的所有组合且该数字不与同一组数字出现的算法

转载 作者:行者123 更新时间:2023-12-02 22:25:19 25 4
gpt4 key购买 nike

我试图用 javascript 编写一个算法,该算法从给定的长度为 6 的数组中返回所有可能的 3 位数字例如

var arr = [1, 2, 3, 4, 5, 6];

我已经得到了二维数组中不同位置的相同数字组的组合。(The code which I took the help of)

如果我在不同的组合中具有相同的数字,那么我想将它们从数组中删除。就像我在包含所有可能组合的数组中的索引 i 处有 [1, 2, 3] ,那么我想删除具有相同数字的其他组合,例如 [2, 1, 3][1, 3, 2] 等等..

Note the array also contains numbers repeated like [3, 3, 3], [2, 2, 2], [3, 2, 3] and so on

我期望一个 2d 数组,其值如下:[[1,2,3],[1,2,4],[1,2,5],[1 ,2,6],[1,3,4]] 等等(24 种可能性)

有什么办法可以做到这一点吗?

最佳答案

扩展answer您链接后,只需借助 Set 过滤掉结果即可.

对单个结果进行排序,使用 join() 将它们转换为字符串,检查set中是否存在,如果没有,则将其存储在最终结果中。

function cartesian_product(xs, ys) {
var result = [];
for (var i = 0; i < xs.length; i++) {
for (var j = 0; j < ys.length; j++) {
// transform [ [1, 2], 3 ] => [ 1, 2, 3 ] and append it to result []
result.push([].concat.apply([], [xs[i], ys[j]]));
}
}
return result;
}

function cartesian_power(xs, n) {
var result = xs;
for (var i = 1; i < n; i++) {
result = cartesian_product(result, xs)
}
return result;
}

function unique_cartesian_power(xs, n) {
var result = cartesian_power(xs, n);
var unique_result = [];
const set = new Set();

result.forEach(function(value) {
var representation = value.sort().join(' ');
if (!set.has(representation)) {
set.add(representation);
unique_result.push(value);
}

});

return unique_result;
}


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

关于javascript - 从长度为 6 的数组中返回 3 个组合的所有组合且该数字不与同一组数字出现的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089629/

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