Python pairing algorithm
unknown
python
3 years ago
1.2 kB
8
Indexable
def pair_teams(teams, matches):
# Получение списка команд, которые еще не были сопоставлены
unpaired_teams = set(teams) - set(match.home_team for match in matches) - set(match.away_team for match in matches)
# Получение списка команд, которые имеют ту же текущую статистику побед/поражений
grouped_teams = {}
for team in unpaired_teams:
win_loss_record = (team.get_wins(matches), team.get_losses(matches))
if win_loss_record not in grouped_teams:
grouped_teams[win_loss_record] = []
grouped_teams[win_loss_record].append(team)
# Сопоставление команд из группы, если возможно
pairings = []
for teams in grouped_teams.values():
while len(teams) >= 2:
pairings.append((teams.pop(), teams.pop()))
# Сопоставление оставшихся команд
while len(unpaired_teams) >= 2:
pairings.append((unpaired_teams.pop(), unpaired_teams.pop()))
return pairings
Editor is loading...