ノックアウト トーナメントのブランク マッチを生成できるようにしたいと考えています。これが私の言いたいことの例です。
8 チームによるノックアウト トーナメントがあるとしMath.log(teamList.length)/Math.log(2)
ます。トーナメントには 3 ラウンドあると計算していました。
各ラウンドでのマッチ数を計算するための一般的なルールは次のとおりです。
numberOfRounds = n [ [2^n-1 matches], ...., [2^0 matches] ]
このことから、8 チームのトーナメントでは 3 ラウンドがあり、トーナメントは次のようになることがわかります。
[ [4 matches], [2 matches], [1 match] ]
各試合は配列として保存されるため、たとえば 8 チーム トーナメントの準決勝は次のようになります。
[ [team1,team2], [team3,team4] ]
チームのリストを取得し、トーナメントの空白の試合のセットを生成できることを意味するコードを生成しようとしています。
したがって、8 チームのリストをトーナメントに渡すと、次のマッチ配列が生成されます。
[
[ [], [], [], [] ],
[ [], [] ],
[ [] ]
]
これを行う方法について誰かアイデアがありますか?これまでのところ、次のものしかありません。
for(var i = 0; i < numRounds; i++) {
matches.push([]);
}
これはトーナメントの各ラウンドを生成するため、8 チームの場合、長さ 3 の配列が生成されますが、各ラウンド内で必要な数の試合を生成する方法がわかりません。