The Student Room Group

Rotation algorithm (for badminton)

This problem has come from person experience and not from a textbook etc.

There are 6 people, {A, B, C, D, E, F} and 1 badminton court with 4 places in a doubles match, so 2 people play against 2 other people. At any one time 4 people will play and two will sit off so you might have a game where A&B are playing C&D like this:

A B
C D

and E, F sit out. I make it that there are 6C4 x 3 = 45 different possible matches.

I'm wondering if there's a simple algorithm that can be used to rotate the players every match so that:

- None of the 45 matches are repeated (until all have been played)
- Every person spends the same amount of time sitting out as everyone else

I had a think but couldn't come up with anything that was completely fair but I may have missed something obvious. Or it could be a problem with no perfect solution. Any help is appreciated.

EDIT: I should have mentioned that I’m looking for something that could be used without prior planning / writing down combinations so any group of 6 could implement it.
(edited 5 years ago)
Original post by 0-)
- None of the 45 matches are repeated (until all have been played)
- Every person spends the same amount of time sitting out as everyone else

I had a think but couldn't come up with anything that was completely fair but I may have missed something obvious. Or it could be a problem with no perfect solution. Any help is appreciated.

I feel I'm missing something; why doesn't any enumeration of the 45 matches do what you want?
Reply 2
Original post by DFranklin
I feel I'm missing something; why doesn't any enumeration of the 45 matches do what you want?

Sorry you're completely right, that would work. But in the real life scenario that would involve listing all 45 combinations and telling everyone where to go each time. This wouldn't be that much work but what I was looking for is something simple like, "back 2 players come off, front two switch sides etc." that could be used without any prior planning. I hope that makes sense.
Original post by 0-)
Sorry you're completely right, that would work. But in the real life scenario that would involve listing all 45 combinations and telling everyone where to go each time. This wouldn't be that much work but what I was looking for is something simple like, "back 2 players come off, front two switch sides etc." that could be used without any prior planning. I hope that makes sense.

Here's an enumeration:

1: AB CD EF
2: AB CE DF
3: AB CF DE
4: AB DE CF
5: AB DF CE
6: AB EF CD
7: AC BD EF
8: AC BE DF
9: AC BF DE
10: AC DE BF
11: AC DF BE
12: AC EF BD
13: AD BC EF
14: AD BE CF
15: AD BF CE
16: AD CE BF
17: AD CF BE
18: AD EF BC
19: AE BC DF
20: AE BD CF
21: AE BF CD
22: AE CD BF
23: AE CF BD
24: AE DF BC
25: AF BC DE
26: AF BD CE
27: AF BE CD
28: AF CD BE
29: AF CE BD
30: AF DE BC
31: BC DE AF
32: BC DF AE
33: BC EF AD
34: BD CE AF
35: BD CF AE
36: BD EF AC
37: BE CD AF
38: BE CF AD
39: BE DF AC
40: BF CD AE
41: BF CE AD
42: BF DE AC
43: CD EF AB
44: CE DF AB
45: CF DE AB

Note that in this enumeration, each team is always in lexicographic order, and if you consider the two teams as a pair of items (i.e. treating a team like "AB" as a single 'word'), then the two teams are also always in lexicographic order.

If you do this, I think it's fairly straightforward to do the enumeration incrementally; it's essentially just counting through viable permutations, and the ordering restrictions make it reasonably efficient. (But like counting, it's hard to write in a "simple" way - you have the exceptions where you need to "carry" the 1).

Quick Reply

Latest