I'm trying to create a software to help anize mixed Padel tournaments, to do so I'm creating a function that generates rounds.
The tournament will have X male players and X female players (X is even), the function should generate a round of X/2 matches, with no player playing against the same other player twice and no player playing with the same other player twice. It is possible for two players to play with and against separately though.
To do so I have created 3 dictionaries:
possibleTeammates = {}
possibleAdversariesMale = {}
possibleAdversariesFemale = {}
Each of these dictionaries has male players as keys, while values are respectively female players they haven't yet played with, male players they haven't yet played against and female players they haven't yet played against.
Considering X should never be more than 16, maaaaybe 24 if we're really pushing it, is it reasonable to create all possible to combinations of matches for a round with a reasonable enough performance so that I can apply a value to each match and choose the most balanced combination possible? If so, how? Or should I cut my losses, shuffle the list, and push through the first combination that satisfies the filters?
Here's my very simple match class:
class match:
def __init__(self, t1Male, t1Female, t2Male, t2Female):
self.t1Male = t1Male
self.t1Female = t1Female
self.t2Male = t2Male
self.t2Female = t2Female
Thanks!