让球员进入下一场比赛 - 锦标赛支架(需要一些逻辑)

时间:2012-08-27 22:08:42

标签: php javascript html logic

我很难想出一个合理的方法来提升球员参加锦标赛中的新比赛。您可以在此处查看示例:http://www.stickyflames.com/brackets.php?id=3

匹配从1到玩家的数量。 (1-8,在示例中)。 使用问题的第一部分来查看我的匹配项的设置方式:How to determinate round by element in tree (Tournament brackets)?

这是一个展示的场景: Example1赢得他的比赛,所以他被投入比赛5,第1轮。虽然Example2获胜,但进入第5场,第2轮。 另一方面,Example3和Example4被放入M6插槽。

你们中是否有人知道一些数学算法可以计算出他们最终应该达到的匹配? (可以使用模数来确定槽,因此不必担心)

非常感谢。

1 个答案:

答案 0 :(得分: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   

Idk现在你的代码是如何格式化的,但如果你想区分它们,你可以做一个和两个。

现在向上移动的算法只是

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]来访问这封信,这样你就可以确保一个人坚持用b和b一直坚持。希望这会有所帮助。

哦,最后一件事。您可能想知道3a的情况如何?那里没有b。好吧,我不完全确定你是否想要一封信,但如果你确实想要它,你可以让你的代码看看是否存在b。如果没有,那就把它放在一个因为那是它唯一可以去的地方。