编辑:这是他正在寻找的答案。要根据匹配计算回合数:
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 中,因为这是它唯一可以去的地方。