Напишите программу для игры в Connect 4 . Вам дается состояние доски в качестве входных данных, и вы должны решить, в какой столбец поместить свою фигуру, чтобы получить 4 в ряд (по горизонтали, вертикали или по диагонали) или заблокировать противника от того же.
Доска представляет собой массив 6х7, где каждая клетка может быть пустой (''), содержать вашу фигуру ('X') или фигуру вашего оппонента ('O'). Пример платы:
O
XX X
XOX OO
XOO OXO
OXXOXXO
XOXOXOX
Вы хотели бы играть в столбце 3 (столбцы 0-6, пронумерованы слева) для диагонального выигрыша. Итак, вы выводите:
3
Ваш код должен выводить номер столбца, и он должен удовлетворять следующим критериям:
- Вы не можете играть в колонке, в которой уже есть 6 фигур.
- Если есть хотя бы один выигрышный ход, вы должны сыграть один из них.
- Если вы можете помешать вашему оппоненту выиграть в следующий ход, вы должны это сделать.
Обратите внимание, что оптимальная игра не обязательна, только то, что вы немедленно выиграли или предотвратили немедленную победу оппонента. Если у вашего оппонента есть несколько способов выиграть, вам не нужно блокировать ни один из них.
Вам дают доску на стандартном вводе и вы должны напечатать номер столбца, в котором вы хотите играть на стандартном выводе. Доска гарантированно будет хорошо сформирована (нет лунок, по крайней мере, один возможный ход) и не получит выигрыша ни у одного из игроков.
Самый короткий код выигрывает.
Пример 1
X
O
X
O
OOO X
XXX O
Вы должны сыграть в колонке 0 или 4 для победы.
Пример 2
X
X X
O O
XOX XO
XXO XOX
XXO XXO
Вы должны сыграть в колонку 3, чтобы заблокировать немедленный выигрыш противника.
Пример 3
X
XO
OX O
XO XX
XXO OOO
OOO XXO
Вы не можете выиграть или остановить своего противника, поэтому вы можете сыграть в любой столбец 1-6 (0 заполнен).
Пример 4
X
O
X
OOO
XOX
OXOX
Вы не можете играть в колонке 3, так как это позволяет вашему противнику немедленно выиграть. Вы можете играть в колонках 1-2 или 4-6.
источник