Das Wettbewerbssystem der Fußballliga sieht vor, dass eine Mannschaft in einer Saison einmal zu Hause und auswärts gegen andere Mannschaften als sie selbst antritt. Um dies zu erreichen, werfen wir als Nächstes einen Blick auf Python-Ideen und einfache Umsetzungsbeispiele für die Gestaltung eines Fußballliga-Spielplanprogramms:
Jedes Jahr sind die Spielpläne der wichtigsten Ligen der Serie A, der Bundesliga, der Premier League und der La Liga ein Muss für Fans In diesem Absatz, den ich zuvor geschrieben habe, um einen Zeitplan zu erstellen, ist es so bequem, solche Dinge in Python zu schreiben.
Dieser Algorithmus wird Schlangenring-Algorithmus genannt.
Das heißt, alle Teams werden in einem Ring (2 Spalten) angeordnet, wobei die linke Seite an der rechten Seite liegt, das erste Team sich nicht bewegt und die anderen Teams im Uhrzeigersinn zirkulieren, damit es nicht zu Wiederholungen kommt.
Um die Erklärung zu erleichtern, gehen wir davon aus, dass es 8 Teams a bis h gibt. Wie unten gezeigt im Kreis anordnen.
Auf diese Weise ist das Matchup in der ersten Runde (a,h)(b,g)(c,f)(d,e) .
In der nächsten Runde bewegt sich das erste Team a nicht und die anderen Teams bewegen sich wie Zahnräder ein Feld im Uhrzeigersinn.
Auf diese Weise ist das Matchup in der zweiten Runde (a,b)(c,h)(d,g)(e,f) .
Die Zahnräder gleiten weiter, bis sie zum Ausgangspunkt zurückkehren, sodass jedes Team gegen alle 7 anderen Teams spielt.
Tausend Worte sind einen Meter wert. Nehmen Sie als Beispiel die Premier League.
from collections import deque import random def build_schedule(_teamarr): scheduleobj = dict.fromkeys(range(1,20)) fixpos = _teamarr[0] ring = _teamarr[1:] ring = deque(ring) #前半赛程,1-19轮(round) for round in range(1,20): #第1支球队不动,再加上轮转(rotate)的环 teams = [fixpos] + list(ring) #切成2列,左边主队,右边客队 home, away = teams[:len(teams)/2],teams[len(teams)/2:] away = away[::-1] #随机打乱主客队 scheduleobj[round] = [(x,y) if random.random()>=0.5 else (y,x) for x,y in zip(home,away)] ring.rotate(1) #后半赛季对阵跟前半赛季一样,但主客队对调 for round in range(20,39): scheduleobj[round] = [(y,x) for x,y in scheduleobj[round-19]] return scheduleobj if __name__ == '__main__': teamarr = [u'曼联', u'阿斯顿维拉', u'切尔西', u'西汉姆', u'富勒姆', u'热刺', u'利物浦', u'南安普顿', u'埃弗顿', u'诺维奇', u'纽卡斯尔', u'曼城', u'斯托克城', u'桑德兰', u'水晶宫', u'西布罗姆维奇', u'阿森纳', u'赫尔城', u'卡迪夫城', u'斯旺西'] scheduleobj = build_schedule(teamarr) print u'---联赛第1轮---' for h,a in scheduleobj[1]: print u'{}-{}'.format(h,a) print u'---联赛第2轮---' for h,a in scheduleobj[2]: print u'{}-{}'.format(h,a)
Weitere Ideen zum Entwerfen von Fußballliga-Spielplanprogrammen in Python finden Sie auf der chinesischen PHP-Website !