Если у линейной функции по модулю 2 коэффициент при каком-то x_i равен 0, то на каждом ребре гиперкуба этого направления значения совпадают; а если 1, то различаются.
Соответственно, так можно узнать последние 4 бита двоичной записи. Для каждого из направлений смотрим на все 8 рёбер (пар ответов) этого направления. Берём те из них, где известны оба ответа (выкидываем, если один из результатов неизвестен). У оставшихся проводим голосование простым большинством: если больше различающихся, то соответствующий бит равен 1, если больше одинаковых, то 0. И записываем этот результат (например: если различаются, то кладём монетку в соответствующий квадратик сверху).
На примере выше — ответы без вранья и без отказа от ответов. Видно, что на всех парах рёбер « направления 1 » значения различаются, а на всех парах рёбер « направления 2 » они совпадают. Значит, бит единиц равен 1, а бит двоек равен 0.
Post #4330
2.04K
Математические байки Давайте для начала посмотрим, как устроен сам этот код. Загадано число от 0 до 31 — то есть его 5 бит двоичной записи, a_4 a_3 a_2 a_1 a_0. Сопоставим нашим карточкам 16 вершин 4-мерного булевского куба {0,1}^4. И превратим наши 5 бит в 5 коэффициентов аффинной…

