Python pairing algorithm
unknown
python
2 years ago
1.2 kB
5
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...