Створіть найкоротшу програму, щоб перевірити, хто переміг у грі n d tic tac toe.
Ваша програма повинна працювати, коли n
(ширина) та d
(розмірне число) знаходяться в цих діапазонах:
n∈[3,6]∩ℕ ie a number from this list: 3,4,5,6
d∈[2,5]∩ℕ ie a number from this list: 2,3,4,5
n = 3; d = 2
(3 2, тобто 3 на 3):
[][][]
[][][]
[][][]
n = 3; d = 3
(3 3, тобто 3 на 3 на 3):
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
n = 6; d = 2
(6 2, тобто 6 на 6):
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
І так далі.
Перемога (Якщо ви зіграли достатньо багатовимірного тик-нога, це те саме.)
Для того щоб мати виграш, один гравець повинен мати всі сусідні квадрати вздовж лінії. Тобто той гравець повинен мати n
ходи по лінії, щоб бути переможцем.
Суміжні:
- кожна плитка - крапка; наприклад (0,0,0,0,0) - точка в
d=5
- сусідні плитки - це плитки, вони є обома точками на одному одиничному d-кубі. Іншими словами, відстань Чебишева між плитками дорівнює 1.
- Іншими словами, якщо точка
p
прилягає до точкиq
, то кожна координатаp
, яка відповідає відповідної координаті,q
відрізняється від неї не більш ніж одиницею. Крім того, принаймні, пара координат відрізняється рівно на одиницю.
Рядки:
- Лінії визначаються векторами і плиткою. Рядок - це кожна плитка, потрапила в рівняння:
p0 + t
<
some vector with the same number of coordinates as p0>
Вхід :
Вхід буде STDIN. Перший рядок введення буде двома цифрами n
і d
у формі n,d
.
Після цього буде лінія, що складається з координат, що вказують зроблені рухи. Координати будуть перераховані в наступному вигляді: 1,1;2,2;3,3
. Лівий верхній кут є початком (0,0 для 2D). У загальному випадку цей список буде схожий на те, 1,2,...,1,4;4,0,...,6,0;...
коли перше число позначає ліворуч-право-ность, друге вниз-третє, третє через 3-й вимір тощо. Зауважте, що перша координата - це X
перший поворот, другий це O
перший поворот, ....
Після введення буде новий рядок.
Вихід :
Вихід буде STDOUT. Просто вкажіть, хто виграв, якщо хтось виграв, або якщо це нічия. Якщо це не ні ні, ні виграш, нічого не виводьте.
Додатково вкажіть, чи є зіткнення з переміщенням, тобто чи є принаймні два ходи в одному місці.
Якщо виграш / нічия до закінчення введення закінчилася, програма може робити все, що завгодно.
Тестові приклади (хто хоче ще запропонувати?):
Вхід:
4,3
0,0,0;1,1,1;1,0,1;2,0,2;0,0,1;2,0,0;2,0,1;3,0,2;3,0,1
Приклад Вихід:
X wins
Інший можливий вихід (вимагає пояснення):
1
n
для перемоги потрібні рухи по лінії. (Вибачте за те, що не розміщували ці зауваження в пісочниці, але я навіть не встиг його побачити там, оскільки він був розміщений так скоро після пісочниці.)