Задача минимум - единоразовое решение проблемы.
Идеально - возможность создавать все новые и новые рассадки для разного количества игроков и столов. Метод создания рассадок очень интересует, у меня нет идей как правильно решать эту задачу, если не рандомом формировать массив, проверяя подходит ли он под ограничения:)
Ваши условия дают на конечный массив слишком много ограничений, поэтому при проверке уже готового рандомного массива он с вероятностью 99.999% не будет Вас устраивать. Поэтому либо массив должен заполняться постепенно с проверкой каждой новой ячейки на все уже возникшие при ее заполнения ограничения и возможным откатом назад (и весьма далеко), если все ветви далее по ходу заполнения окажутся тупиковыми. Либо как мне кажется неплохо должен сработать на этой задаче генетический алгоритм заполнения - Вы задаете случайную начальную рассадку и вычисляете суммарный штраф за все нарушения условий (при чем можете задать очень большие "заградительные" штрафы за абсолютно недопустимые условия), а затем оптимизируете изменяя построчно/по столбцам минимизируя штраф.