1

トーナメント ブラケットでプレイヤーを新しい試合に進めるための論理的な方法を考えるのに苦労しています。ここで例を見ることができます: http://www.stickyflames.com/brackets.php?id=3

マッチは 1 からプレイしているプレイヤーの数まで進みます。(例では 1 ~ 8)。質問の最初のセクションを使用して、マッチがどのように設定されているかを確認してください: How to determinate round by element in tree (Tournament bracket)?

実演するシナリオは次のとおりです: 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 と 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]で、a が a に固執し、b が b に固執することを確認できます。お役に立てれば。

ああ、最後にもう 1 つ。3a はどうなのかと疑問に思うかもしれません。そこにbはありません。とにかくそこに手紙が必要かどうかは完全にはわかりませんが、必要な場合は、ab が存在するかどうかを確認するコードを作成できます。そうでない場合は、それが入ることができる唯一の場所であるため、それを a に入れます。

于 2012-08-27T22:36:28.597 に答える