Вы, наверное, знаете «Игру жизни» Конвея , знаменитый клеточный автомат, изобретенный математиком Джоном Конвеем. Жизнь - это набор правил, которые вместе позволяют имитировать двумерную доску ячеек. Правила определяют, какие ячейки на доске живут, а какие погибают. С некоторым воображением вы могли бы сказать, что Life - это игра для нулевого игрока: игра, целью которой является поиск моделей с интересным поведением, например, знаменитого планера.
Игра нулевого игрока ... До сегодняшнего дня. Вы должны написать программу, которая играет в Game of Life - и играет в нее, чтобы победить, в стиле King of the Hill. Ваш оппонент (в единственном числе), конечно, пытается сделать то же самое. Победителем становится либо последний бот с любыми живыми клетками, либо игрок с наибольшим количеством живых клеток после 10000 поколений.
Правила игры
Правила почти такие же, как и у обычных (B3 / S23) Жизнь:
- Живая клетка с менее чем двумя дружественными соседями умирает от голода.
- Живая ячейка с двумя или тремя дружелюбными соседями выживает.
- Живая клетка с более чем тремя дружественными соседями умирает от перенаселения.
- Мертвая клетка с ровно тремя соседями одного и того же игрока оживает, чтобы сражаться за этого игрока, при условии, что вражеских соседей нет .
... но после каждого поколения и вы, и ваш противник получают возможность вмешаться. Вы можете пробудить до 30 клеток, чтобы сражаться за вас. (Кто идет первым, определяется сервером.)
Доска представляет собой (x, y) квадрат клеток. Все квадраты изначально мертвы. Границы не охватывают (это не мир в форме тора) и навсегда мертвы.
Это соревнование в духе Battlebots и Core Wars . Есть центральный сервер, который будет запускать ботов, и его можно найти здесь
протокол
Сервер арены говорит по простому протоколу JSON, передаваемому через argv
Где Values - строка в кодировке 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]...]
ПРИМЕЧАНИЕ: ваш бот не должен обновлять плитки вообще - сервер выполняет обновление самостоятельно
Правила соревнований
- Если ваша реализация не будет следовать протоколу, то ход будет аннулирован; Сервер не примет никаких изменений в состоянии
- Вам не позволено умышленно воспользоваться ошибкой на сервере арены.
- Пусть ваш ИИ определится с ходами в разумное время. Пожалуйста, отправьте ваш следующий шаг как можно быстрее.
- Наконец, пожалуйста, будьте любезны с сервером. Это там для вашего удовольствия.
- Несоблюдение этих правил может привести к дисквалификации.
- В случае ничьей обоим игрокам добавляется 1 победа
Запуск контроллера самостоятельно
Источник для контроллера можно найти здесь . Есть 2 способа запуска контроллера:
- Режим соревнования (терминал)
- Настройка с
python3 get_answers.py
- Запустите соревнование «все против всех» с каждым ботом, сравнивающим его друг с другом.
- Настройка с
- Режим тестирования (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 июля, не смог понять, как запустить бот), побеждает.
Помощь с контроллером / графическим интерфейсом можно попросить в этом чате
Этот вопрос находится в разработке с 2014 года и был самым популярным в песочнице. Особая благодарность выражается Wander Nauta (оригинальный автор и концепция), PPCG Chat (комментарии и помощь) и всем, кто прокомментировал сообщение в песочнице (больше комментариев).