Ищете алгоритм или код, если кто-то чувствует себя щедрым на следующие действия. Мне нужно принять участие для ряда игроков. Количество игроков всегда будет в 4 раза. Я хочу сгруппировать отдельных игроков в группы по 4 с наименьшим количеством повторений. Начальное размещение тривиально:
1 2 3 4 Table 1
5 6 7 8 Table 2
9 10 11 12 Table 3
13 14 15 16 Table 4
17 18 19 20 Table 5
21 22 23 24 Table 6
Таким образом, игроки 1-4 «видели» друг друга один раз. Каждый играет в свою игру, а затем игроки тасуются. На следующем проходе (и последующих проходах) я хочу переставить игроков так, чтобы они имели наименьшее количество совпадений. По сути, я хочу, чтобы игрок не видел повторяющееся лицо как можно дольше, а если это уже невозможно, я хочу максимально уменьшить его.
Я чувствую, что это должен быть относительно простой алгоритм, но каждый подход, который я в конечном итоге выбираю, кажется, что он взвешивает себя в пользу людей, которые обрабатываются первыми ... и мои мысли говорят мне, что есть абсолютно правильный ответить.
Для ясности никто не исключается, они просто перетасовываются каждый раз.