Крестики-нолики

Крестики-нолики — логическая игра между двумя противниками на квадратном поле 3 на 3 клетки или большего размера (вплоть до «бесконечного поля»). Один из игроков играет «крестиками», второй — «ноликами». В традиционной китайской игре используются черные и белые камни.

Игроки по очереди ставят на свободные клетки поля 3х3 знаки (один всегда крестики, другой всегда нолики). Первый, выстроивший в ряд 3 своих фигур по вертикали, горизонтали или диагонали, выигрывает. Первый ход делает игрок, ставящий крестики.

Обычно по завершении партии выигравшая сторона зачёркивает чертой свои три знака (нолика или крестика), составляющих сплошной ряд.

Анализ

Классические «крестики-нолики» на поле 3x3 не представляют никакого практического интереса (разве что для маленьких детей, как начальный этап обучения логическим играм, или в качестве несложного задания по программированию для студенческой лабораторной работы) — общеизвестен алгоритм, который при правильной игре гарантирует ничью любой стороне, а при ошибке противника позволяет выиграть. Таким образом, игра находится в состоянии «ничейной смерти».

Перебор всех возможных ходов:
За крестики


Сделать первый ход в центральное поле.
Противник может ответить ходом либо в угол, либо на сторону поля.

*Если противник ответил ходом в угловое поле — сходить в ответ в соседний угол.
Противник будет вынужден пойти в противоположный угол, чтобы на следующем ходу не проиграть.
Дальнейшие ходы делаются так, чтобы блокировать построение тройки противником. — Ничья.
*Если противник ответил ходом на сторону — он проиграл. Следует ответить ходом в один из двух несоседних углов.
Противник будет вынужден пойти в противоположный угол, чтобы на следующем ходу не проиграть.
Сходить в угол, соседний с предыдущим, так, чтобы крестики образовали треугольник — получится «вилка», позволяющая следующим ходом построить тройку двумя способами.
Как бы ни ответил противник, следующим ходом строится одна из троек и тогда будет выйгрыш или сделать первый ход в угол.
Противник может ответить либо ходом на сторону, либо ходом в угол, либо ходом в центр.
*Если противник ответил ходом в угол, он вновь проигрывает. Следует ответить ходом в любой из оставшихся углов.
Противник будет вынужден блокировать угрозу, следующим ходом нужно занять последний угол, что дает вилку и опять выигрыш.
*Если противник ответил ходом в центр, то нужно занять угол противоположный первому углу. Противник может ответить либо ходом на сторону, либо ходом в угол.
*Если противник ответил ходом в угол, он проиграл — следует немедленно занять другой угол, блокируя тройку противника и образуя свою вилку - выигрыш.
*Если противник ответил ходом на сторону, то следующие ходы строятся так, чтобы блокировать тройки соперника - ничья.


За нолики.


*Если противник сходил первым ходом в центр, ответить ходом в любой из углов, затем каждым следующим ходом блокировать возможность построения противником очередной тройки, при возможности выбора предпочитая ходы в углы - ничья.
*Если противник сходит первым ходом не в центр, ответить ходом в центр. Если ответным ходом противник займёт два противоположных угла, ответить ходом на сторону. Затем каждым следующим ходом блокировать возможность построения противником очередной тройки, при возможности выбора предпочитая ходы в углы - ничья.

Данный алгоритм предполагает оптимальную игру противника. Естественно, если противник допускает ошибку, позволяющую следующим ходом построить тройку, её следует построить, но при правильной игре такое невозможно. Таким образом, нолики могут гарантированно обеспечить себе только ничью.



 

Загрузка...

 

 

Загрузка...