gpt4 book ai didi

javascript - 将 192 场比赛的赛程分成 6 场比赛的周,不重复球队

转载 作者:行者123 更新时间:2023-11-28 16:59:28 24 4
gpt4 key购买 nike

我已经编写了一份联赛赛程表,以便 12 支球队总共进行 192 场比赛(与联盟对手各 4 次,与跨联盟对手各 2 次)。我也对这些游戏进行了洗牌。

我的最后一步是将这 192 场比赛分为 16 周,每场 6 场比赛。但是,重要的是每支球队在任何给定的一周内只出现一次(即每周只打一场比赛)。这是我坚持的部分。

我的日程安排数组看起来像这样:

let schedule = ["a : b", "c : d", "e : f", "g : h", "i : j", "k : l", "m : n", "o : p", "q : r", "s : t", "u : v", "x : y", "a : c", "d : f", "g : i", "l : o"]; // remember, this is actually 192 elements long

从这个数组(记住它有 192 个元素,所以它比上面的大,这是显示数据结构的示例)我想生成 week1,这是一个包含 6 个元素的数组schedule 数组中的元素,如下所示:

let week1 = ["a : b", "c : d", "e : f", "g : h", "i : j", "k : l"];

以上就是我想要的结果。但是,我不能只使用 schedule.slice(0, 6) 来获取 6 个元素,因为我最终可能会让团队玩两次,如下所示:

let week1 = ["a : b", "c : d", "a : e", "f : g", "h : i", "j : k"]; // Notice "a" is playing twice here, which I do not want.

所以,问题是,如何从 192 场比赛的数组中取出 6 场比赛,但确保每支球队在这 6 场比赛的数组中只出现一次?

最佳答案

const games = ["a : b", "c : d", "e : f", "g : h", "i : j", "k : l", "m : n", "o : p", "q : r", "s : t", "u : v", "x : y", "a : c", "d : f", "g : i", "l : o"];

const teamsTaken = new Set();
const result = [];

for(const game of games) {
if(result.length >= 6) break;

const [teamA, teamB] = game.split(" : ");
if(teamsTaken.has(teamA) || teamsTaken.has(teamB)) continue;

teamsTaken.add(teamA);
teamsTaken.add(teamB);

result.push(game);
}

console.log(result);

使用哈希表排除重复项。

关于javascript - 将 192 场比赛的赛程分成 6 场比赛的周,不重复球队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57974024/

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