У меня есть метод, который генерирует совпадения для каждой из двух лучших команд группового этапа.
Group A
T1───┐
│
T2───┘
├───┐
T3───┐ │ ├───T1
│ │ │
T4───┘ │ ├───T6
Group B ├───│
T5───┐ │ ├───T2
│ │ │
T6───┘ │ ├───T5
├───┘
T7───┐
│
T8───┘
def generate_final_stage(advanced_teams):
teams_from_group_stage = advanced_teams
matches = []
for i in range(len(teams_from_group_stage)):
teams = []
if i != len(teams_from_group_stage) - 1:
team_1 = teams_from_group_stage[i][0]
team_2 = teams_from_group_stage[i + 1][1]
teams.append(team_1)
teams.append(team_2)
else:
team_1 = teams_from_group_stage[i][0]
team_2 = teams_from_group_stage[0][1]
teams.append(team_1)
teams.append(team_2)
matches.append([teams[0], teams[1]])
return matches
def main():
# Possible Inputs
advanced_teams = [[1, 2, 3], [4, 5, 6]]
advanced_teams2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
advanced_teams3 = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
schedule = generate_final_stage(advanced_teams3)
print(schedule)
if __name__ == "__main__":
main()
Я хотел бы улучшить этот скрипт, чтобы он также генерировал совпадения для последующих мест. Если 3, 4, 5 или более команд идут в PlayOff, этот скрипт должен генерировать игры соответственно. Если количество команд на групповом этапе не является странным, игры должны быть сгенерированы следующим образом: Лучшая команда против худшей команды. Например:
1st. Team from Group A vs. 2nd Team from Group B
1st. Team from Group B vs. 2nd Team from Group A
when 3 teams go from the group stage to the PlayOff.
3rd. Team from Group A vs. 3rd Team from Group B
when 4 teams go from the group stage to the PlayOff.
3rd. Team from Group A vs. 4th Team from Group B
3st. Team from Group B vs. 4th Team from Group A
when 5 teams go from the group stage to the PlayOff.
5th. Team from Group A vs. 5th Team from Group B
and so on
Например, с учетом [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
Я ожидаю следующий результат:
[[1, 7], [6, 2], [3, 9], [4, 8], [5, 10]]
Количество групп также является динамическим, может быть2, 4, 6, 8, 10 и т. Д. По группам. В этом случае первые две группы играют друг с другом, а следующие две одинаковые, а затем следующая и следующая [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24]]
Выходные данные должны быть:
[(1, 8), (7, 2), (3, 10), (9, 4), (5, 12), (11, 6), (13, 20), (14, 19), (15, 22), (16, 21), (17, 24), (18, 23)]