Python'da iç içe geçmiş listelerin bir listesini oluşturacak basit bir özyinelemeyi yapmaya çalışıyorum. Son sonuç, tek bir eleme turnuvası dirseğini temsil edecektir. Bunun gibi bir liste oluşturmanın, ihtiyacım olan şeyi üretmemi kolaylaştıracağını umuyorum. Bu daha sonra turnuva maçları için modeller oluşturmak için kullanılacaktır.Python'da bir köşeli model listesi oluşturmak için algoritma
Yani 4 katılımcıdan oluşan turnuva varsa: 7 katılımcı
[[1,4],[2,3]]
Turnuva:
[[1,[4,5]],[[2,7],[3,6]]]
Veya 8 katılımcı turnuva:
[[[1,8],[4,5]],[[2,7],[3,6]]]
Ben cenneti' Henüz bir algoritma sınıfına sahiptim (sınıfın bunun gibi şeylerle sonuçlanacağını umuyorum) bu yüzden tamamen değilim. Bu soruna nasıl yaklaşacağınızdan emin olabilirsiniz. Aşağıda benim girişimi şimdiye kadar.
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)
Buna nasıl yaklaşacağınız konusunda herhangi bir yardım veya açıklama büyük ölçüde takdir edilecektir!
Düzenleme:
rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds
Dene: http://ideone.com/RVe8SQ – irrelephant
@irrelephant mutlaka bunun bir cevabı yerine bir açıklama olmalıdır? –
@irrelephant Burada 16 oyuncu var: http://pastebin.com/sTT07iCj Orijinal cevabınız, doğru sırayla bir liste verilmişse, belki de bir tür basit bir işlevle çözülebilecek bir şekilde çalışıyorsa çalışır. – computmaxer