Ich versuche, eine einfache rekursive Funktion zu erstellen, die eine Liste von verschachtelten Listen in Python generiert. Das Endergebnis wird eine Ausscheidungsrunde darstellen. Ich hoffe, dass das Erstellen einer solchen Liste es mir leicht macht, das zu generieren, was ich brauche. Dies wird später verwendet, um Modelle für Turnierspiele zu erstellen.Algorithmus zum Generieren einer Klammermodellliste in Python
Also, wenn es ein Turnier von 4 Teilnehmern ist:
[[1,4],[2,3]]
Turnier von 7 Teilnehmern:
[[1,[4,5]],[[2,7],[3,6]]]
Oder ein Turnier von 8 Teilnehmern:
[[[1,8],[4,5]],[[2,7],[3,6]]]
I haven‘ Ich hatte noch eine Klasse von Algorithmen (ich hoffe, dass die Klasse am Ende mit solchen Dingen helfen wird), also bin ich nicht vollständig sicher, wie Sie dieses Problem angehen. Unten ist mein Versuch soweit.
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)
Jede Hilfe oder Erklärung, wie man sich nähert, würde sehr geschätzt!
Edit: Derzeit Ich rufe die Funktion wie folgt aus:
rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds
Versuchen: http://ideone.com/RVe8SQ – irrelephant
@irrelephant eine Antwort, sollte sicherlich eher als ein Kommentar? –
@irrelephant Hier ist ein 16-Spieler: http://pastebin.com/sTT07iCj Ihre ursprüngliche Antwort funktioniert, wenn es eine Liste in der richtigen Reihenfolge gegeben wird, die vielleicht mit einer einfachen Funktion einer Art gelöst werden könnte. – computmaxer