[Math] How to rotate 3 groups of 4 people into teams of 3 so that each person in one group works with each person in the other groups

combinatorial-designscombinatorics

I have three teams of four people. I would like to create rotating groups of three, where each group has one person from each team, and those people rotate on a staggered schedule so that each person is in the group for 3 slots.
For example, if team 1 is people a, b, c, and d; team 2 is people e, f, g, and h; team 3 is people i, j, k, l, the start of the schedule might look like this

  1. a, e, i
  2. b, e, i
  3. b, f, i
  4. b, f, j
  5. c, f, j
  6. c, g, j
  7. c, g, k
  8. d, g, k
  9. d, h, k
  10. d, h, l
  11. a, h, l
  12. a, i, l

How do I shift the order in future to make sure that the groups change and everyone gets to work with all of the people on the other teams?

Thanks!

Best Answer

Assuming that during every shift all 12 people are involved in 4 groups of 3, it obviously takes at least 4 shifts before everyone will have worked at some point with every from all the other groups, because for everyone there are 8 such 'other' people, and during any shift they can only get to meet 2 people.

In fact, here is a schedule that does it in exactly 4 shifts:

\begin{array}{c|cccccccccccc} Shift&a&b&c&d&e&f&g&h&i&j&k&l\\ \hline 1&1&2&3&4&1&2&3&4&1&2&3&4\\ 2&1&2&3&4&2&1&4&3&3&4&1&2\\ 3&1&2&3&4&3&4&1&2&4&3&2&1\\ 4&1&2&3&4&4&3&2&1&2&1&4&3\\ \end{array}

(so, during every shift, group together the people with the same number)