1

我很难想出一个合乎逻辑的方法来让球员在我的锦标赛中进入一场新的比赛。你可以在这里看到这个例子:http: //www.stickyflames.com/brackets.php?id=3

比赛从 1 到参加比赛的玩家人数。(在示例中为 1-8)。使用问题的第一部分来查看我的比赛是如何设置的:如何逐轮确定树中的元素(锦标赛括号)?

下面是一个要演示的场景:Example1 赢得了他的比赛,所以他被扔到了第 5 场比赛的第 1 场。而 Example2 赢得了他的比赛,并进入了第 5 场比赛的第 2 场比赛。另一方面,Example3 和 Example4 被放入了 M6 赛位。

你们中有人知道一些数学算法可以计算出他们应该在哪里结束比赛吗?(插槽可以使用模数确定,所以不用担心)

谢谢一堆。

4

1 回答 1

2

编辑:这是他正在寻找的答案。要根据匹配计算回合数:

Math.round(match# / 2) + Round-1-match-count

很高兴你能自己解决:]

另一种看待它的方式:

让我们在这里重新设计问题。现在看起来你正在适应这种树

1 
      5       
2
          7
3 
      6  
4   

类似的事情,你有点想要一个算法,它将得到 1/2 到 5、3/4 到 6 等。我敢打赌你可以为此制定一个公式,但它可能比必要的要复杂一些。如果你想一想,1/2 永远不必输入 6,3/4 永远不必输入 5,等等。事实上,我认为这样看会更容易、更准确:

0a 
      2a       
1a
          3a
0b 
      2b  
1b   

我知道你的代码现在是如何格式化的,但如果你想区分它们,你可以做 a's 和 b's 。

现在向上移动的算法只是

if (spot == 0) { 
    spot=spot+2;     //we'll move it to the next because 0 is the only exception
} else {             //if odd  
    spot=spot+1;     //ideally we only need to add one to move to the next bracket
}

您只能使用parseInt获取号码。可是等等!因为它们是相同的编号,它如何知道要去哪个插槽?这就是我们可以使用字母的原因。字符串最酷的地方在于,它们只是串在一起的字符数组。例子:

var word = "Hello";
word[0] = "H";

所以你可以通过这样做来访问这封信,spot[1]这样你就可以确保a's坚持a's,b's坚持b's。希望这可以帮助。

哦,还有最后一件事。您可能想知道 3a 怎么样?那里没有b。好吧,我不完全确定你是否想要一封信,但如果你确实想要它,你可以制作你的代码来查看 ab 是否存在。如果没有,则将其放入 a 中,因为这是它唯一可以去的地方。

于 2012-08-27T22:36:28.597 回答