풋볼 리그의 경쟁 시스템은 팀이 한 시즌에 홈 및 원정에서 한 번 리그 내 다른 팀과 대결하는 것입니다. 이를 달성하기 위해 루프 알고리즘을 사용할 수 있습니다. 다음으로 Python Ideas를 살펴보겠습니다. 그리고 축구 리그 일정 프로그램 설계를 위한 간단한 구현 예시:
매년 세리에 A, 분데스리가, 프리미어 리그, 라 리가 등 메이저 리그의 일정은 팬들에게 꼭 봐야 할 작품이라고 생각합니다. 이전에 일정을 생성하기 위해 작성한 문단입니다. Python으로 이런 내용을 작성하는 것은 매우 편안합니다.
이 알고리즘을 스네이크 링 알고리즘이라고 합니다.
즉, 모든 팀을 링(2열)으로 배열하고 왼쪽이 오른쪽이 되도록 배치하고 첫 번째 팀은 움직이지 않고 나머지 팀은 시계 방향으로 순환하여 반복이 없도록 합니다.
설명의 편의를 위해 a부터 h까지 8개의 팀이 있다고 가정합니다. 아래와 같이 원형으로 배열합니다.
이렇게 1라운드 대결은 (a,h)(b,g)(c,f)(d,e) .
다음 라운드에서는 첫 번째 A팀은 움직이지 않고 나머지 팀들은 시계방향으로 기어처럼 움직입니다.
이렇게 2라운드의 대결은 (a,b)(c,h)(d,g)(e,f) .
기어는 시작점으로 돌아올 때까지 계속 미끄러지며 각 팀이 다른 7개 팀과 대결을 펼칩니다.
천 마디 말은 1야드의 가치가 있습니다. 프리미어리그를 예로 들어보겠습니다.
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)
Python으로 축구 리그 일정 프로그램을 설계하는 방법에 대한 더 많은 아이디어를 보려면 PHP 중국어 웹사이트에 주목하세요!