Closed tufusa closed 1 month ago
満たすべき性質はnotionを参照のこと。
コースが3つ、
の合計11チームの場合
[A1, A2, A3, A4, B1, B2, B3, C1, C2, N1, N2]
[A1, A2, A3], [A4, B1, B2], [B3, C1, C2], [N1, N2]
[A1, A4, B3, N1], [A2, B1, C1, N2], [A3, B2, C2]
[0, 1, 2, 3] → [2, 3, 0, 1] (後ろに2だけ前後を循環させてずらす) → [[0, 2], [1, 3], [2, 0], [3, 1]] (全チーム間に1試合空いているので合法)
[0, 1, 2] → [2, 0, 1] (後ろに1だけ前後を循環させてずらす) → 空を挿入 → [[0, 2], [1, φ], [φ, 0], [2, 1]] (全チーム間に1試合空いているので合法)
合法になるのはこの挿入の仕方しか存在しない。
[0, 1] → [1, 0] → 空を挿入 → [[0, 1], [φ, φ] [1, 0]]
同じ相手とマッチしてしまうが、間に時間があることのほうを優先するため。 実際にこのような状況になった場合はコース数を減らすべき。
[0] → [0] → 空を挿入 → [[0, φ], [φ, φ] [φ, 0]]
間に時間があることを優先するため。 実際にこのような状況になった場合はコース数を減らすべき。
makePairs
[[A1, B3], [A4, N1], [B3, A1], [N1, A4]], [[A2, C1], [B1, N2], [C1, A2], [N2, B1]], [[A3, C2], [B2, φ], [ φ, A3], [C2, B2]]
以上で完成。
適当につつくなり同意を表明するなり質問するなりしてください。
予選試合表生成のアルゴリズム
満たすべき性質はnotionを参照のこと。
例
コースが3つ、
の合計11チームの場合
アルゴリズム
表の左コース側に、左上から詰めていくことに相当する
各コースの左側をまとめることに相当する
合法になるのはこの挿入の仕方しか存在しない。
同じ相手とマッチしてしまうが、間に時間があることのほうを優先するため。
実際にこのような状況になった場合はコース数を減らすべき。
間に時間があることを優先するため。
実際にこのような状況になった場合はコース数を減らすべき。
makePairs
関数(仮名)とし、各配列にmakePairs
関数を適用する以上で完成。