В то время как 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.
■ Владимир Леттиев