В то время как Google тестирует автомобили, которые управляются роботом, предлагаю не отставать и реализовать искусственный интеллект, который бы управлял Змейкой.
По условиям игры, необходимо управлять змейкой, которая двигается по плоскости и ищет еду. Движение змеи остановить невозможно, после поглощения еды змея увеличивается в длине. Змея не должна натыкаться на препятствия: границы экрана, а также саму себя, в противном случае игра завершается.
В репозитории golf-10 реализован простейший вариант консольной игры с использованием библиотеки Curses. В простейшем варианте змейкой можно поуправлять вручную (snake.pl), а можно поиграть и против роботов (snake-fight.pl), но в этом случае надо реализовать хотя бы одного такого робота.
Как сделать своего робота? Для этого необходимо создать файл скрипта в каталоге
script
с именем your_github_login.pl
. Ваш робот будет запущен в отдельном
процессе и на STDIN
получит строку с шестью полями, разделёнными
пробелом, со следующими данными:
- содержимое поля над головой змеи (
0
--- пусто,#
--- препятствие,@
--- яблоко(пища) ) - содержимое поля справа от головы змеи
- содержимое поля снизу от головы змеи
- содержимое поля слева от змеи
- смещение по оси Y до яблока
- смещение по оси X до яблока
Например:
0 0 # 0 -10 2
На STDOUT
должны будут быть переданы значения смещения по координатам Y
и
X
, относительно текущего положения головы, например:
-1 0
Смещение по оси Y
на 1 вниз, нет смещения по оси X
. Необходимо учитывать,
что змейка не может двигаться по диагонали, поэтому только одна координата может
иметь ненулевое смещение. В нашем случае координаты точки 0,0
находятся в
левом верхнем углу, ось Y
растёт вниз, в ось X
вправо.
Цель игры --- написать не просто самый короткий вариант реализации управления, но и
самый результативный в плане количества поглощённых яблок. И, как обычно,
победителя определит make test
.
Проверяться решения будут на последней стабильной версии Perl, т.е. 5.18.1 (или 5.18.2, если она выйдет в декабре). Приём решений закончится как только куранты начнут бить 12 ударов и начнётся Новый 2014 год. Поднимая бокал шампанского, можете загадать, чтобы ваш вариант выиграл в конкурсе, ведь вдруг потом вашим роботом заинтересуются в Google.
■ Владимир Леттиев