Суть задачи такова:
Пусть у нас есть чётное число 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
Комментариев нет:
Отправить комментарий