Фон
Му Торере - це гра, яка є однією лише з двох відомих, яку марійці Нової Зеландії грали до європейського впливу. Це робить його дуже унікальною грою тим, що вона має "об'єктивний критерій виграшу" та правила гри, які відрізняються від більшості інших існуючих ігор.
Ігровий процес:
Дошка - восьмикутник. Між кожною сусідньою вершиною є з'єднання, і є центральний вузол, який з'єднаний з усіма вершинами. У будь-який момент часу вісім із дев’яти вузлів зайняті камінням. На початку - чотири білих та чотирьох чорних каменів, які посідають одну половину восьмикутника, центральний вузол порожній. Чорний рухається першим.
Кожен поворот гравця може переміщати один із своїх каменів по одному з 16 країв від одного вузла до порожнього вузла. Камінь можна переміщати лише від зовнішнього вузла до центрального вузла, якщо камінь знаходиться поруч з каменем противника.
Гравець програє, коли не в змозі зробити законний хід, який відбувається, коли немає краю, що з'єднує камінь із порожнім вузлом.
Ось веб-сайт, який пояснює правила (із діаграмою) та пропонує певний аналіз.
Змагання
Ваше завдання полягає в тому, щоб написати найкоротшу програму, яка може зіграти ідеальну гру Мурере проти людського опонента. Ваша програма повинна мати можливість відображати та оновлювати ігрову дошку, робити рухи та отримувати рухи від опонента людини. Найголовніше, що вона повинна грати досконалою грою.
Ідеальна гра?
Так, ідеальна гра. Я робив аналіз гри, і виявив, що гра триває нескінченну кількість часу, якщо її грають ідеально обидві сторони. Це означає, що ваша програма ніколи не повинна програвати. Крім того, ваша програма повинна мати можливість виграти виграш кожного разу, коли опонент людини помилиться, що дозволяє програмі примусити виграти. Що стосується того, як ваша програма знаходить ідеальний хід, це залежить від вас.
Деталі
Після кожного ходу (і на початку гри) ваша програма повинна надрукувати ігрову дошку. Однак ви вирішите відображати плату, вона повинна показувати всі вузли та бути повністю з’єднаними (усі 16 ліній з'єднання повинні бути прокреслені без перекреслених ліній). На старті дошка повинна мати правильне вихідне положення. Один із способів досягти цього - зробити ігрове поле квадратним.
w-w-w
|\|/|
b-o-w
|/|\|
b-b-b
Два кольори - чорний і білий, або темний / світлий. На дошці повинно бути вказано, які вузли зайняті частинами гравця, наприклад, позначення їх "b" або "w", а який вузол є вакантним. Учасникам рекомендується (але не вимагається) зробити ігрову дошку більш графічною, а не простою текстою.
Ваша ігрова дошка повинна мати систему нумерації, яка надає кожному вузлу унікальне число. Ви можете нумерувати дошку будь-яким способом, але це має бути пояснено у вашій відповіді чи програмі. Квадратну дошку можна пронумерувати таким чином:
1-2-3
|\|/|
4-5-6
|/|\|
7-8-9
Людина - це перший рух. Його вхід буде єдиним номером. Це буде номер вузла, де знаходиться перенесений камінь. Якщо я хотів би перенести камінь із вузла 4 у порожній вузол 5, я наберу a 4
. 5 мається на увазі, оскільки це єдиний порожній вузол.
Припустимо, що людина завжди зробить законний крок.
Після того як людина робить свій хід, слід надрукувати оновлену дошку. Після того як ваша програма зважиться на законний хід, вона повинна надрукувати ще одну оновлену дошку, а потім чекати, коли людина вступить на інший хід.
Ваша програма повинна припинитись після її виграшу.
Примітки
Застосовуються стандартні правила гольф-коду, відсутність доступу до зовнішніх файлів і т. Д., І т. Д. Також я накладу гнучку ліміт часу на 15 секунд (на розумній машині) для вашої програми, щоб зробити кожен її хід. Як зазначалося, у цій грі є можливість утворювати нескінченні петлі, і я не хочу, щоб перший поглиблений пошук потрапляв у нескінченний цикл.