chudo_ud0....
по этому моменту могу предложить упрощенный вариант черка.
если у противников не пустое множество общих не сыгранных шаблонов
черкать из него- чисто для ускорения неудобной процедуры.
и если не сыгранные шаблоны противников не пересекаются, то черкать из
объединенного множества не сыгранных шаблонов.
пример 1. непустое пересечение.
игрок1 не сыграл: маска летос лабиринт
игрок2 не сыграл: М3 лабирит радура
имеем непустое пересечение = лабиринт = играем лабиринт(разумеется может быть больше пересечений и нужно будет их "дочеркать")
пример 2 :
игрок1 не сыграл: маска летос лабиринт
игрок2 не сыграл: М3 солнце радура
общего пересечения нет, черкаем из списка =
маска летос лабиринт М3 солнце радура
просто и понятно и быстро