Створіть детерміновану програму для гри n d tic-tac-toe з іншими учасниками.
Ваша програма повинна працювати, коли n
(ширина) та d
(розмірне число) знаходяться в цих діапазонах:
n∈[3,∞)∩ℕ ie a natural number greater than 2
d∈[2,∞)∩ℕ ie a natural number greater than 1
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):
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
І так далі.
Вхід:
Вхід буде 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
перший поворот, ....
Якщо це буде перший крок, то введено число, а потім 1 порожній рядок.
Для послідовності введення завжди закінчується новим рядком. Зразок введення (\ n - новий рядок):
10,10\n0,0,0,0,0,0,0,0,0,0;0,2,3,4,5,6,7,8,9,0;0,1,2,3,4,5,6,7,8,9\n
Для першого кроку:
10,10\n\n
де \n
символ нового рядка.
Вихід:
Виведіть хід, який ви хочете зробити, у тому ж форматі, що і введення (список, розділений комами). Недійсний хід (тобто вже зроблений) призведе до втрати для гри.
Примітка: Ви можете використовувати генератор випадкових чисел до тих пір, поки ви почнете його з таким значенням, що кожний запуск буде ідентичним за однакових умов. Іншими словами, програма повинна бути детермінованою.
Примітка. Дозволені лише дійсні ходи.
Виграючі ігри (Якщо ви зіграли достатньо багатовимірного тик-нога, це те саме.)
Для того щоб мати виграш, один гравець повинен мати всі сусідні квадрати вздовж лінії. Тобто той гравець повинен мати 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>
Умови моделювання та перемоги:
Вкажіть свою відповідь, чи вона готова до оцінювання. Тобто чітко вкажіть, чи зроблена ваша відповідь чи ні.
Якщо ваша відповідь буде позначена як виконана, вона не буде оцінена як мінімум через 24 години після останнього редагування коду.
Програми повинні працювати в автономному режимі. Якщо програма виявляється як обман, вона автоматично отримає бал
-1
і більше не буде набрана. (Як би хто-небудь закінчився з їх обманом?)Якщо ваша програма видає недійсний вихід, вона негайно зараховується як втрата для гри
Якщо програма не дає результату через 1 хвилину, це негайно зараховується як втрата для гри. При необхідності оптимізуйте для швидкості. Мені не потрібно чекати годину, щоб перевірити програму з іншої.
Кожна програма буде запускатися проти інших програм двічі для кожної
n
в діапазоні[3,6]
і кожноїd
в діапазоні[2,5]
, один раз якX
і один разO
. Це один тур.За кожну гру виграє програма, вона отримує
+3
свій рахунок. Якщо програма зрівняла (1 виграш і 1 програш в одному раунді або зв'язали обидві гри), то вона отримує+1
. Якщо програма програла, вона отримує+0
(тобто немає змін).Перемагає програма з найвищим балом. Якщо має бути нічия, тоді виграє програма з найменшою кількістю програних ігор (із зв'язаних учасників).
Примітка. Залежно від кількості відповідей, мені може знадобитися допомога в проведенні тестів.
Удачі! І нехай симуляції запускаються колись на вашу користь!