На данной фотографии настольная игра "Мыслитель" советского производства. Это логическая игра для двух игроков.
Правила игры. Каждый игрок загадывает четыре различных цвета из шести возможных. Цель игрока — отгадать загаданный противником набор цветов. Игрокам даётся 6 попыток.
За каждую попытку ставится "оценка": если совпали и цвет, и позиция, то ставится черный колышек, а если совпал цвет, но не совпала позиция, то ставится белый колышек.
Компьютерная реализация игры "Мыслитель". Разработана компьютерная программа, позволяющая играть в эту игру. На рисунке изображен снимок экрана.
В интернете можно найти программы такого типа, но они, как правило, не позволяют играть с компьютером. Кроме того, интерфейс разработанной программы отличается от интерфейсов аналогов, интерфейс данной программы приближен к внешнему виду настольной игры.
Компьютер играет по следующему алгоритму. Первый ход компьютер делает случайным образом. Следующие ходы компьютер делает по методу минимакса. Компьютер пробует делать все возможные ходы. Для каждого хода вычисляется максимальное возможное количество комбинаций цветов, которые мог загадать пользователь, и выбирается ход, для которого это количество минимально.
Было проведено испытание данного алгоритма. Загадывались все возможные комбинации цветов (всего
комбинаций), и вычислялось, за сколько ходов компьютер отгадает загаданную комбинацию. Оказалось, что компьютер всегда отгадывает комбинацию максимум за шесть ходов; в 12 случаях компьютеру понадобилось 2 хода, чтобы отгадать комбинацию, в 59 случаях — 3 хода, в 175 случаях — 4 хода, в 105 случаях — 5 ходов и в 9 случаях — 6 ходов.
Программу можно скачать здесь.
Кстати, интересен тот факт, что мне пришлось сделать две разные версии программы: одну для Windows XP (или более ранних версий), а другую - для Windows 7 (возможно, эта же версия подходит для Windows Vista).
Дело здесь в том, что программу я написал на Delphi, и отображение графических элементов одной и той же программы, написанной на Delphi, в разных версиях Windows может происходить по-разному.
![]() |
Рис. 1. Настольная игра "Мыслитель". |
Правила игры. Каждый игрок загадывает четыре различных цвета из шести возможных. Цель игрока — отгадать загаданный противником набор цветов. Игрокам даётся 6 попыток.
За каждую попытку ставится "оценка": если совпали и цвет, и позиция, то ставится черный колышек, а если совпал цвет, но не совпала позиция, то ставится белый колышек.
Компьютерная реализация игры "Мыслитель". Разработана компьютерная программа, позволяющая играть в эту игру. На рисунке изображен снимок экрана.
![]() |
Рис. 2. Снимок экрана. |
В интернете можно найти программы такого типа, но они, как правило, не позволяют играть с компьютером. Кроме того, интерфейс разработанной программы отличается от интерфейсов аналогов, интерфейс данной программы приближен к внешнему виду настольной игры.
Компьютер играет по следующему алгоритму. Первый ход компьютер делает случайным образом. Следующие ходы компьютер делает по методу минимакса. Компьютер пробует делать все возможные ходы. Для каждого хода вычисляется максимальное возможное количество комбинаций цветов, которые мог загадать пользователь, и выбирается ход, для которого это количество минимально.
Было проведено испытание данного алгоритма. Загадывались все возможные комбинации цветов (всего
Программу можно скачать здесь.
Кстати, интересен тот факт, что мне пришлось сделать две разные версии программы: одну для Windows XP (или более ранних версий), а другую - для Windows 7 (возможно, эта же версия подходит для Windows Vista).
Дело здесь в том, что программу я написал на Delphi, и отображение графических элементов одной и той же программы, написанной на Delphi, в разных версиях Windows может происходить по-разному.
Комментарии
Известный учёный Дональд Кнут предложил стратегию игры в эту игру, при которой, как показал Д. Кнут, нужно не более 5 попыток, чтобы отгадать любую комбинацию, и в среднем 4,34 попыток для отгадывания.
Источник: раздел Википедии на русском языке, статья "Быки и коровы": http://ru.wikipedia.org/wiki/Быки_и_коровы.
Таким образом, моя игра играет по неоптимальной стратегии. Но так, может быть, даже интереснее играть с компьютером, потому что, если бы компьютер играл по оптимальной стратегии, у него было бы сложнее выиграть.
http://github.com/grenkin/thinker
Отправить комментарий