2012-08-27 40 views
1

我很難想出一個合理的方法來將球員推進到我的錦標賽括號中的新比賽。你可以看到這裏的例子:http://www.stickyflames.com/brackets.php?id=3將球員晉級到下一場比賽 - 錦標賽方括號(需要一些邏輯)

比賽從1到玩的玩家人數。 (在這個例子中爲1-8)。 使用此第一部分的問題,看我的比賽是如何設置:How to determinate round by element in tree (Tournament brackets)?

這裏是展示一個之情況: 例1勝了對手,所以他被扔進匹配5,插槽1.在例2勝他,並進入匹配5,插槽2. 另一方面,Example3和Example4被放入M6插槽。

你們中的任何一個人都知道一些數學算法可以計算出他們應該結束的匹配嗎? (插槽可以使用模數確定,所以不用擔心)

感謝一堆。

回答

1

編輯:這是他正在尋找的答案。爲了計算基於比賽的回合:

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您的代碼現在是如何格式化的,但如果您想區分它們,您可以執行a和b操作。

現在拉昇算法只是

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。如果沒有,那麼把它放在一個因爲這是它唯一可以去的地方。

+0

任何幫助表示讚賞芽 - 我會等待最終結果。這在過去的幾天裏一直在我的腦海中,當涉及到邏輯問題時,我幾乎從不需要任何幫助。 :D – TurdPile

+0

好吧我修好了。我想在我的情況下,0/1的情況總會有那麼尷尬的時刻。之後,您只需添加1即可進入下一階段。我覺得應該工作。希望這可以幫助。如果有什麼需要澄清的,只需評論! – aug

+0

好的,我喜歡這個答案(如果那是我參加比賽的建議:P)。不幸的是,我沒有。就目前而言,數據庫會保存:tourney_id |匹配| p1 | p2 |優勝者。 因此,對於1的匹配,p1應該是Example5,而p2應該是Example1。 另外 - 如果JavaScript是您用來演示的舒適語言,那很好 - 我使用這個腳本的PHP,它沒有太大的差別,我可以將JS轉換爲PHP。 – TurdPile