Sto provando a creare una semplice funzione ricorsiva che generi un elenco di elenchi nidificati in Python. Il risultato finale rappresenterà una singola parentesi torneo di eliminazione. Spero che la creazione di una lista come questa mi consenta di generare ciò di cui ho bisogno. Questo verrà in seguito utilizzato per creare modelli per le partite del torneo.Algoritmo per la generazione di un elenco di modelli di parentesi in Python
Quindi, se c'è un torneo di 4 partecipanti:
[[1,4],[2,3]]
Torneo di 7 partecipanti:
[[1,[4,5]],[[2,7],[3,6]]]
o un torneo di 8 partecipanti:
[[[1,8],[4,5]],[[2,7],[3,6]]]
Mi rifugio' Ho ancora una classe di algoritmi (spero che la classe finirà per aiutare con cose come questa) quindi non sono completamente sicuro come affrontare questo problema. Di seguito è il mio tentativo finora.
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)
Qualsiasi aiuto o spiegazione su come avvicinarsi a questo sarebbe molto apprezzato!
Edit: Attualmente sto chiamando la funzione come questa:
rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds
Prova: http://ideone.com/RVe8SQ – irrelephant
@irrelephant sicuramente che dovrebbe essere una risposta piuttosto che un commento? –
@irrelephant Ecco un 16 player: http://pastebin.com/sTT07iCj La risposta originale funziona se viene fornita una lista nell'ordine corretto, che potrebbe essere risolta con una semplice funzione di qualche tipo. – computmaxer