Напишіть програму для гри в гру Connect 4 . Вам надається стан дошки як вхідний і ви повинні вирішити, у який стовпець розмістити свою деталь, щоб отримати 4 підряд (по горизонталі, вертикалі чи по діагоналі) або заблокувати опонента робити те ж саме.
Дошка - це масив розміром 6x7, де кожна комірка може бути порожньою (''), містити свій шматок ('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.