Страницы

Поиск по вопросам

вторник, 6 ноября 2018 г.

Составление календаря футбольного чемпионата на Python

Суть задачи такова: Пусть у нас есть чётное число N команд. Требуется составить календарь игр, который будет удовлетворять следующим условиям:
Команды играют по круговой системе (каждая играет с каждой) Календарь поделен на туры (которых, очевидно, будет N-1) Каждая команда играет строго одну игру за тур
Пишу сюда впервые, изучаю Python совсем недавно. На первый взгляд задача очень простая, но корректно накодить у меня не получается. Заранее спасибо за ответы!


Ответ

Реализация на Питоне round-robin алгоритма из @MBo ответа
import collections
teams = "ABCDEF" n = len(teams) tail = collections.deque(teams[1:n//2] + teams[n//2:][::-1]) for _ in range(len(tail)): print_round(teams[0], *tail) tail.rotate()
где print_round() показывает текущий тур:
def print_round(*teams, sep='
'): n = len(teams) print(*teams[:n//2]) print(*teams[n//2:][::-1]) print(end=sep)
Результат
A B C D E F
A D B E F C
A E D F C B
A F E C B D
A C F B D E
 

Комментариев нет:

Отправить комментарий