Maison > Article > développement back-end > Idées pour concevoir un programme de calendrier de ligue de football en Python
Le système de compétition de la ligue de football est qu'une équipe affronte des équipes autres qu'elle-même dans la ligue une fois à domicile et à l'extérieur au cours d'une saison. Nous pouvons utiliser un algorithme de boucle pour y parvenir. Ensuite, jetons un coup d'œil aux idées Python. et des exemples simples de mise en œuvre pour concevoir un programme de calendrier de ligue de football :
Chaque année, les calendriers des ligues majeures de Serie A, Bundesliga, Premier League et La Liga sont un incontournable pour les fans, je pense. paragraphe que j'ai écrit auparavant pour générer un planning, c'est tellement confortable d'écrire ce genre de choses en Python.
Cet algorithme s'appelle l'algorithme de l'anneau de serpent.
C'est-à-dire disposer toutes les équipes en anneau (2 colonnes), côté gauche contre côté droit, la première équipe ne bouge pas, et les autres équipes circulent dans le sens des aiguilles d'une montre, pour qu'il n'y ait pas de répétition.
Pour faciliter l'explication, supposons qu'il y a 8 équipes a à h. Disposez en cercle comme indiqué ci-dessous.
De cette façon, le match du premier tour est, (a,h)(b,g)(c,f)(d,e) .
Au tour suivant, la première équipe a ne bouge pas, et les autres équipes se déplacent d'une case dans le sens des aiguilles d'une montre comme des engrenages.
De cette façon, le match du deuxième tour est, (a,b)(c,h)(d,g)(e,f) .
Les engrenages continuent de glisser jusqu'à revenir au point de départ, de sorte que chaque équipe joue contre les 7 autres équipes.
Mille mots valent un mètre. Prenons l'exemple de la 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)
Pour plus d'idées sur la conception de programmes de calendrier de ligue de football en Python, veuillez prêter attention au site Web PHP chinois !