gpt4 book ai didi

javascript - 生成从 1 到 5 的给定输入选择可以生成的所有可能序列的列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:08:06 24 4
gpt4 key购买 nike

我一直在尝试一些有趣的挑战,但我遇到了这个让我感到有点沮丧的挑战。谁能指出我正确的方向?

我有一个列表:

var values = ['blue', 'green', 'red', 'yellow', 'purple'];

我想从该列表返回给定输入的所有可能序列。我试过这样的事情:

function combinations(number) {
const values = ['blue', 'green', 'red', 'yellow', 'purple'];
let arr = values.slice(0, number);

if (arr.length === 1) {
result = [...arr];
console.log(result)
}

var result = arr.reduce((acc, v, i) => acc.concat(arr.slice(i + 1).map(w => v + ' ' + w)),[]);


console.log(result);
}

combinations(2);

但结果只返回 ['blue', 'green'] 它应该返回 ['blue', 'green', 'bluegreen', 'greenblue']。该解决方案应为每个序列至少返回 1 个值,当然没有重复值

有人可以帮忙吗!!我卡住了!

最佳答案

这是一个工作示例 - 首先您找到所有组合,然后为每个组合计算其排列(因此对于 ["blue", "green"] 您还包括 ["green", "blue"] 等等).

var values = ['blue', 'green', 'red', 'yellow', 'purple'];

function perms(items) {
let ret = [];

for (let i = 0; i < items.length; i++) {
let rest = perms(items.slice(0, i).concat(items.slice(i + 1)));

if (!rest.length) {
ret.push([items[i]])
} else {
for(let j = 0; j < rest.length; j = j + 1) {
ret.push([items[i]].concat(rest[j]))
}
}
}

return ret;
}

function combinations(n) {
let result = [];
let combine = (items, other = []) => {
for (var i = 0; i < items.length; i++) {
let permutations = perms([...other, items[i]]);
result.push(...permutations);

combine(items.slice(i + 1), [...other, items[i]]);
}
}
combine(values.slice(0, n));

return result;
}

console.log(combinations(2));

关于javascript - 生成从 1 到 5 的给定输入选择可以生成的所有可能序列的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947610/

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