Python でネストされたリストのリストを生成する単純な再帰関数を作成しようとしています。最終結果は、シングル エリミネーション トーナメント ブラケットになります。このようなリストを作成することで、必要なものを簡単に生成できることを願っています。これは後でトーナメント マッチのモデルを作成するために使用されます。
したがって、参加者が 4 人のトーナメントがある場合:
[[1,4],[2,3]]
7名参加トーナメント:
[[1,[4,5]],[[2,7],[3,6]]]
または、参加者 8 人のトーナメント:
[[[1,8],[4,5]],[[2,7],[3,6]]]
私はまだアルゴリズムのクラスを持っていないので (このクラスが最終的にこのようなことに役立つことを願っています)、この問題にどのようにアプローチすればよいか完全にはわかりません。以下はこれまでの私の試みです。
def decide_rounds(list_to_fill, player_nums):
if len(player_nums) < 3:
for num in player_nums:
list_to_fill.append(num)
return
left = []
decide_rounds(left, ??????) #Tried passing various things to these with no avail.
list_to_fill.append(left)
right = []
decide_rounds(right, ???????)
list_to_fill.append(right)
これにアプローチする方法についてのヘルプや説明は大歓迎です!
編集:現在、私は次のように関数を呼び出しています:
rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds