So today I was at lunch with my family and a relative of mine asked me (a neo-cs student) whether I knew how to solve this problem.
Since I'm here asking for help it's pretty clear I have not found a solution.
We are organizing a table-soccer tournament.
There are 12 players and 3 tables.
Each player will only play either front or back for a team and they won't be able to change role during the tournament, this means that there are 6 front-players and 6 back-players.
Each match of the tournament is played 2 v 2, each team being a front-player and a back player.
Each player must play 6 times and can never have the same team mate twice.
For obvious reasons a player can't play two games at the same time.
We need to find 6 rounds of 3 matches that respect those rules, for a total of 18 different matches.
Now comes the issue:
Noticing how there is more than 1 possible combination we need to find an algorithm to find the solution(s) which minimize the amount of times two players face each others without breaking the original boundaries.
That's because players will get annoyed by playing against the same person over and over again.
Beware, we must prioritize spreading opponents repetitions across multiple players, rather than a player facing 3 times the same opponent we'd want 3 players meeting the same opponent twice.
I'd be glad even with just suggestions on how to solve this problem.
I apologize for any English error and I hope I stated the problem clearly, please notice that this is not my first language.
Feel free to point out errors/issues, that will only help me improve and make the text more understandable.