>  기사  >  백엔드 개발  >  Python으로 축구 리그 일정 프로그램을 설계하기 위한 아이디어

Python으로 축구 리그 일정 프로그램을 설계하기 위한 아이디어

高洛峰
高洛峰원래의
2017-03-01 14:10:542631검색

풋볼 리그의 경쟁 시스템은 팀이 한 시즌에 홈 및 원정에서 한 번 리그 내 다른 팀과 대결하는 것입니다. 이를 달성하기 위해 루프 알고리즘을 사용할 수 있습니다. 다음으로 Python Ideas를 살펴보겠습니다. 그리고 축구 리그 일정 프로그램 설계를 위한 간단한 구현 예시:

매년 세리에 A, 분데스리가, 프리미어 리그, 라 리가 등 메이저 리그의 일정은 팬들에게 꼭 봐야 할 작품이라고 생각합니다. 이전에 일정을 생성하기 위해 작성한 문단입니다. Python으로 이런 내용을 작성하는 것은 매우 편안합니다.
이 알고리즘을 스네이크 링 알고리즘이라고 합니다.
즉, 모든 팀을 링(2열)으로 배열하고 왼쪽이 오른쪽이 되도록 배치하고 첫 번째 팀은 움직이지 않고 나머지 팀은 시계 방향으로 순환하여 반복이 없도록 합니다.
설명의 편의를 위해 a부터 h까지 8개의 팀이 있다고 가정합니다. 아래와 같이 원형으로 배열합니다.

Python으로 축구 리그 일정 프로그램을 설계하기 위한 아이디어

이렇게 1라운드 대결은 (a,h)(b,g)(c,f)(d,e) .
다음 라운드에서는 첫 번째 A팀은 움직이지 않고 나머지 팀들은 시계방향으로 기어처럼 움직입니다.

Python으로 축구 리그 일정 프로그램을 설계하기 위한 아이디어

이렇게 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으로 축구 리그 일정 프로그램을 설계하기 위한 아이디어

Python으로 축구 리그 일정 프로그램을 설계하는 방법에 대한 더 많은 아이디어를 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.