Напевно, ви знаєте «Гра життя» Конвея , знаменитий стільниковий автомат, винайдений математиком Джоном Конуей. Життя - це набір правил, які разом дозволяють імітувати двовимірну дошку комірок. Правила визначають, які клітини на дошці живуть, а які вмирають. Маючи трохи уяви, ви можете сказати, що Life - гра з нульовим гравцем: гра з метою знайти зразки з цікавою поведінкою, як у відомого планера.
Гра з нульовим гравцем ... До сьогодні. Ви маєте написати програму, яка грає в «Гра життя» - і грає її, щоб виграти, Король гори. Ваш противник (сингулярний), звичайно, намагається зробити те саме. Переможець або останній бот з будь-якими живими клітинами, або гравець з найбільш живими клітинами після 10000 поколінь.
Правила гри
Правила майже такі ж, як і звичайні (B3 / S23) Життя:
- Жива клітина з менш ніж двома доброзичливими сусідами помирає від голоду.
- Виживає жива клітина з двома-трьома дружніми сусідами.
- Жива клітина з більш ніж трьома доброзичливими сусідами гине від перенаселення.
- Мертва клітина з рівно трьома сусідами того ж гравця оживає, щоб боротися за цього гравця за умови, що ворогів немає .
... але після кожного покоління ви і ваш противник отримуєте можливість втручатися. Ви можете розбудити до 30 клітинок, щоб боротися за вас. (Хто перший йде, вирішує сервер.)
Дошка - квадрат (x, y) комірок. Усі квадрати спочатку мертві. Кордони не обертаються (це не світ у формі тору) і назавжди мертві.
Це змагання в дусі Battlebots та Core Wars . Є центральний сервер, який запускає ботів, і його можна знайти тут
Протокол
Сервер арени говорить простий протокол JSON, переданий через argv
Де Значення - це кодований рядок JSON
y_size
: максимум y координати плиток, перш ніж вони зникнутьx_size
: максимальна кількість х плиток плит, перш ніж вони зникнутьtick_id
: поточний номер галочкиboard
: словник з ключами у формі '(y, x)' та значеннями у форміbot_id
(int)bot_id
: плитки в дошці з цим ідентифікатором є вашими
Приклад:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
Повідомлення сервера на ваш вибір:
- Надішліть серверу список плиток, щоб перетворитись на ваш колір.
- Будуть змінені лише ті, які порожні
- Формат списку вкладених координат
[[0,0], [0,1], [100,22]...]
ПРИМІТКА. Ваш бот зовсім не повинен оновлювати плитки - сервер виконує оновлення сам
Правила змагань
- Якщо ваша реалізація не дотримується протоколу, її черга буде втрачена; Сервер не припускає жодних змін у стані
- Вам не дозволяється навмисно скористатися помилкою на сервері арени.
- Попросіть ваш AI прийняти рішення про кроки в здоровий час. Будь ласка, надішліть наступний крок якомога швидше.
- Нарешті, будь ласка, приємно до сервера. Це там для вашої насолоди.
- Недотримання цих правил може призвести до позбавлення волі.
- У разі нічиїх обох гравців до їх загальної суми додається 1 перемога
Запуск контролера самостійно
Джерело для контролера можна знайти тут . Існує 2 способи роботи контролера:
- Режим конкуренції (термінал)
- Налаштування с
python3 get_answers.py
- Запустіть змагання all v all з кожним ботом, протиставляючи його один одному.
- Налаштування с
- Режим тестування (GUI)
- Біжи
python3 nice_gui.py
- Клацніть
Pull Answers
- Якщо ви хочете додати власну відповідь, щоб спробувати її перед публікацією, натисніть
File -> Add manual answer
і знайдіть файл та виберіть мову, на якій він написаний. - Якщо вашої мови немає, пінг мені, і я спробую встановити його на сервер, я запустити його (інструкції з встановлення та запуску було б непогано!)
- Виберіть 2 боти, щоб піднятися один проти одного
- Клацніть
Run
- Дивитися гру ...
- Біжи
- Установка
- Потрібен python3
- get_answers вимагає bs4 та html5lib
- контролер вимагає способу запуску .sh файлів (MinGW у Windows)
Оцінка балів
Бот з найбільшою кількістю виграшів починаючи з 12/07/2016
(12 липня)14/07/2016
(14 липня не зміг розібратися, як запустити бота).
Довідку з контролером / gui можна попросити в цій кімнаті чату
Це питання розробляється з 2014 року і було найбільш актуальним питанням у пісочниці. Особлива подяка Прогуляйтеся NAUTA (автор оригіналу і концепція), PPCG чат (коментарі та допомогу) і всім , хто коментував в пісочниці повідомленням (більше коментарів).