Auslosung Spielplan

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Hallo,

ich bin dabei in Turnier zu organisieren.
Funktioniert auch alles ganz gut, aber ich habe noch keinen Weg gefunden, die Begegnungen in der Gruppenphase aus zu losen.
Den einzigen sicheren Ansatz, den ich bisher gefunden habe sieht so aus:

Code: Alles auswählen

begegnungen = list(itertools.combinations(self.teams, 2))
(self.teams ist eine Liste der teilnehmenden Mannschaften)


Allerdings gefällt mir der Spielplan nicht:

Code: Alles auswählen

>>> import itertools
>>> teams = ['SC Alpha', 'FC Entenhausen', 'SV-Lila', 'XYZ']
>>> begegnungen = list(itertools.combinations(teams, 2))
>>> for b in begegnungen:
	print ' : '.join(b)

	
SC Alpha : FC Entenhausen
SC Alpha : SV-Lila
SC Alpha : XYZ
FC Entenhausen : SV-Lila
FC Entenhausen : XYZ
SV-Lila : XYZ
>>> 
Ich denke, das Problem ist offensichtlich. (SC Alpha sollte nicht 3 mal hintereinander spielen etc.)
random.shuffle ist hier wenig nützlich.

Ich hatte auch schon andere Ansätze, bisher alles nicht gelungen :(

Weiß jemand, wie das z.B. in der Bundesliga gemacht wird? Da ist das ganze ja noch komplexer.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Vor dem Problem stand ich auch mal! Du suchst den Round-Robin Algo. Ich hatte eines meiner ersten Scripte hier mal gepostet:
http://www.python-forum.de/topic-13728. ... ound+robin

Ich habs nun überarbeitet; ich denke so ist es wesentlich eleganter:
http://paste.pocoo.org/show/204089/

Doku des Algo im Code.

Ich brauchte das mal für Turniere für meinen TT-Club :-) Auch wenn das Schema immer gleich bleibt; wir haben einfach Spielpläne für 4er, 6er, 8er, 10er und 12er Gruppen. Mehr braucht man idR nicht.
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Hey super! Danke! Sieht auf dem ersten Blick wunderbar aus. Ich werd mich mal einarbeiten :)
Antworten