Игра "Инверсия" на Arduino
Мы, в Бионик-лаб, разработали, изготовили и запрограммировали электронную логическую игру-головоломку на Arduino. Игра содержит 8 светодиодов (2 ряда по 4 светодиода) и 8 кнопок расположенных рядом со светодиодами. В исходном состоянии светодиоды выключкны. Цель игры - включить все светодиоды. Но, нажимая 1 кнопку вы сразу инвертируете состояние всех светодиодов в том ряду и столбце где находится кнопка. То есть каждая кнопка за один ход меняет состояние 5-ти светодиодов на противоположное.
Игра собрана на макетной плате 400pin. Модуль управления Arduino NANO, 8 светодиодов, 8 резисторов, 8 кнопок и зуммер.
Несмотря на кажущуюся простоту и довольно простой алгоритм, которрый мы реализовали на языке Си, игра получилась увлекательной и оказалось довольно сложно найти правильное решение.
Сергей Полозков сделал анализ этой задачи и нашел алгоритм ее решения, а так же сделал строгое математическое доказательство верности своего алгоритма.
Суть алгоритма решения этой головоломки заключается в следующем:
Каждая кнопка инвертирует 5 светодиодов. Игрок должен найти и нажать кнопку, у которой среди пяти светодиодов, которыми она управляет, имеется не четное количество выключенных светодиодов.
Вы можете найти несколько кнопок удовлетворяющих выше указанному условию, нажатие на любую из них неизбежно ведет к победе.