О чем речь?

Игра Сет (ссылка на Вики)

Предполагается поиск сета (3х карточек с определенными совпадающими/не совпадающими признаками) в выкладке из 12 карточек. Если сет не находится игроками, до докладываются еще 3 карточки. И так до выкладки в 21 карточку.

Гарантировано сет есть только в выкладке в 21 карточку. В 12, 15, 18 карточках может и не быть сета.

При этом, игроки на свое усмотрение решают, есть ли в выкладке сеты или их нет и надо докладывать. Видимо предполагается, что игроки искушены в сете и что какое-то разумное время они сет искали.

Проблема

Как гарантировано определить, что сета в выкладке нет?

Тут есть сет?
Тут есть сет?

Алгоритм для определения отсутствия сета в выкладке

Нужен какой-то способ понять, что сетов нет. При этом мы имеем векторное пространство 4х измерений.

Как это проанализировать на листке бумаги?

Тут аж 2 сета
Тут аж 2 сета

Алгоритм (в стиле "как рисовать сову"):

1) Делаем табличку на бумаге 9х9 и ставим точки, соответствующие карточкам.

2) Ищем среди точек диагонали или прямые, при условии, что точки расположены симметрично относительно центров внутренних квадратов - это и будут сеты.

Еще примеры

Тут один сет
Тут один сет
А тут сетов нет
А тут сетов нет

Дополнение

Если перевести все признаки на карточках в наборы чисел, то в сетах каждая сумма по каждому признаку делятся на 3 нацело. А в тройках, не являющихся сетами, не каждая сумма по признакам делится на 3.

Рассматриваем наборы по 3 карточки, каждая из которых представлена в виде 4х чисел
Рассматриваем наборы по 3 карточки, каждая из которых представлена в виде 4х чисел