Próbuję utworzyć prostą funkcję rekursywną, która wygeneruje listę zagnieżdżonych list w języku Python. Wynik końcowy będzie reprezentował pojedynczy turniej turniejowy eliminacji. Mam nadzieję, że stworzenie takiej listy ułatwi mi generowanie tego, czego potrzebuję. Będzie to później wykorzystywane do tworzenia modeli meczów turniejowych.Algorytm generowania listy modeli nawiasów w języku Python
Więc jeśli jest to turniej z 4 uczestników:
[[1,4],[2,3]]
Turniej 7 uczestników:
[[1,[4,5]],[[2,7],[3,6]]]
Albo turniej z 8 uczestników:
[[[1,8],[4,5]],[[2,7],[3,6]]]
I haven” t ma jeszcze klasę algorytmów (mam nadzieję, że klasa skończy się pomaganiem w takich rzeczach), więc nie jestem całkowicie upewnij się, jak podejść do tego problemu. Poniżej moja dotychczasowa próba.
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)
Każda pomoc lub wyjaśnienie, jak się do tego podejść, zostanie bardzo doceniona!
Edit: Obecnie jestem wywołując funkcję tak:
rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds
Spróbuj: http://ideone.com/RVe8SQ – irrelephant
@irrelephant pewno, że powinna być odpowiedź, a nie komentarz? –
@irrelephant Oto 16 graczy: http://pastebin.com/sTT07iCj Twoja oryginalna odpowiedź działa, jeśli zostanie podana lista w prawidłowej kolejności, która może być rozwiązana za pomocą prostej funkcji. – computmaxer