Javascript 单个淘汰赛的算法,其中被淘汰的球队还争夺剩余位置
我正在构建一个网球比赛的应用程序,我想生成比赛,以便进行一次类似这样的淘汰赛,被淘汰的球队将不得不为剩余的位置进行竞争 为了澄清,本次比赛以N支球队开始,在上面的例子中,我们有8支球队首先参加a组和B组的比赛,将进行总共12场比赛(循环赛),然后在下一阶段,a组的获胜者与B组的最后一支球队比赛,依此类推,直到我们有第13场到第16场的括号。然后胜利者在主队比赛,失败者在第二队争夺剩余位置。比赛分阶段进行的方式是这样的:在下一阶段,第一场比赛由输球的球队进行,在所有输球的球队方括号都打完之后,将按上述方式进行赢球的球队方括号,第17场和第18场比赛是“第二方”输球的球队比赛,第19场和第20场比赛是“主要方”赢家比赛 我用javascript开发了一个简单的算法,我试图在其中实现一个匹配阶段数组,它将告诉我将按顺序进行多少次“第二方”匹配,然后是多少次“主要方”匹配:Javascript 单个淘汰赛的算法,其中被淘汰的球队还争夺剩余位置,javascript,algorithm,Javascript,Algorithm,我正在构建一个网球比赛的应用程序,我想生成比赛,以便进行一次类似这样的淘汰赛,被淘汰的球队将不得不为剩余的位置进行竞争 为了澄清,本次比赛以N支球队开始,在上面的例子中,我们有8支球队首先参加a组和B组的比赛,将进行总共12场比赛(循环赛),然后在下一阶段,a组的获胜者与B组的最后一支球队比赛,依此类推,直到我们有第13场到第16场的括号。然后胜利者在主队比赛,失败者在第二队争夺剩余位置。比赛分阶段进行的方式是这样的:在下一阶段,第一场比赛由输球的球队进行,在所有输球的球队方括号都打完之后,将
const generateMatchesBrakets = (mainSideMatches) => {
let matchesPlayed = [];
let stage = 0;
while ( parseInt(mainSideMatches) ) {
let secondSideMatches = parseInt(secondSideMatches / 2);
if ( matchesPlayed[stage] === undefined ) matchesPlayed[stage] = [];
matchesPlayed[stage]['main'] = [];
for(let i = 0; i < mainSideMatches; i++) matchesPlayed[stage]['main'].push(1);
if (secondSideMatches) {
let nextRound = stage + 1;
if ( matchesPlayed[nextRound] === undefined ) matchesPlayed[nextRound] = [];
matchesPlayed[nextRound]['second'] = [];
for (let i = 0; i < secondSideMatches; i++) matchesPlayed[nextRound]['second'].push(1);
}
mainSideMatches /= 2;
stage++;
}
return matchesPlayed;
}
let teams = 8;
let n = teams / 2;
if (n % 2 !== 0) n++;
let mainTournamentBrackets = generateMatchesBrakets(n);
let secondTournamentdBrackets = [];
mainTournamentBrackets.forEach( bracket => {
if ( bracket['second'] ) {
let n = bracket['second'].length;
secondTournamentdBrackets.push( generateMatchesBrakets(n) );
}
})
所以我正在生成第二个匹配的下一个分支,计划是用主分支连接它。如果每个括号中有两个以上的比赛失败,问题就会出现
任何帮助和建议都将不胜感激
提前谢谢你
(3) [Array(0), Array(0), Array(0)]
0: [main: Array(4)]
1: [second: Array(2), main: Array(2)]
2: [second: Array(3 /*+ 2 from second matches*/) , main: Array(1)]
length: 3