Недостаток еды в Змеиной яме
Впервые за 35 лет в змеиной яме не хватает еды. Обитатели змей теперь должны сражаться друг с другом, чтобы пережить этот дефицит пищи. Только одна змея может стоять на вершине пищевой цепи!
Leaderboard
Еще не здесь!
Последнее обновление 24 февраля
Ссылка на визуализации последних матчей
Описание
Если вы хотите бороться за последние оставшиеся яблоки / вишни / что угодно, вы должны предоставить змею в форме программы, которая принимает заданный вход и возвращает следующий ход.
Единственный поворот в том, что вы не одиноки в своей яме. Другая змея тоже попытается достать редкую еду! Но внутри змеиной ямы темно, поэтому вы можете видеть только себя и яблоко. Столкновение с вашим противником приведет к вашей смерти, так же, как укусить себя или ударить стену. Кроме того, поскольку яблоки редки в наши дни, вы голодаете, если ваш противник съел достаточно, чтобы достичь длины 7.
Змеиная яма - это двумерная карта шириной и высотой 15, в то время как самые внешние плитки образуют непроходимую стену:
0 1 2 . . . c d e
0 # # # # # # # # #
1 # #
2 # x #
. # #
. # #
. # #
c # #
d # #
e # # # # # # # # #
Координаты имеют нулевую индексацию, поэтому точка, в которой x
находится, будет 12,2
.
Ваш бот будет вызываться с двумя аргументами:
- Расположение еды
- Расположение сегментов вашего тела, разделенных
/
Затем следует написать одно из следующего в stdout:
L
на четверть левого поворота, как его следующий ходR
на четверть правого поворота- Что-нибудь еще для движения в том же направлении
Пример:
Projects/Snakepit> python bot.py 12,2 4,8/4,9/3,9/2,9
'R'
Projects/Snakepit>
правила
Вашему боту разрешено:
- Выведите что-нибудь, потому что все является правильным ходом
- Чтение / запись файлов в своем собственном каталоге, который находится в ./snakes/ThisIsYourSnake
- Запустите на Ubuntu 14.04 и Windows 7 (это на самом деле должно)
Ваш бот не должен:
- Чтение / запись файлов вне собственного каталога
- Используйте внешние ресурсы, такие как интернет
- Иметь время выполнения более 10 секунд на исполнение
Вы должны предоставить в своем ответе:
- Исходный код бота
- Имя бота / змеи
- (Ваше собственное имя)
- Команда для запуска вашего бота
Если вы хотите , чтобы сделать свою жизнь проще, пожалуйста , предоставьте следующую строку
CoolSnake MyOwnName python bot.py
.
счет
Ваша змея получает очко за победу в игре против другой змеи. Игра выиграна при следующих обстоятельствах:
- Ваш противник бьет себя, вас или стену
- Вы достигаете длины 7
Кроме того, обе змеи голодают после 200 циклов.
Каждая змея будет бороться 10 матчей за выживание друг против друга змея.
Пример ботов
Просто чтобы дать вам представление, я приведу этих двух (участвующих) примеров змей:
SneakySnake
#!/usr/bin/env python
import sys, random
def main(food, me) :
food = [int(i) for i in food.split(",")]
me = [[int(i) for i in seg.split(",")] for seg in me.split("/")]
head = me[0]
v = [head[0] - me[1][0], head[1] - me[1][1]]
if food[0] < head[0] :
vn = [-1, 0]
elif food[0] > head[0] :
vn = [1, 0]
elif food[0] == head[0] :
if food[1] < head[1] :
vn = [0, -1]
elif food[1] > head[1] :
vn = [0, 1]
if v == vn :
return "..."
elif [-v[1], v[0]] == vn :
return "R"
elif [v[1], -v[0]] == vn :
return "L"
else :
return random.choice(("R", "L"))
if __name__ == "__main__" :
print main(*sys.argv[1:3])
SneakySnake Cipher python bot.py
ViciousViper
#!/usr/bin/env python
import sys, random
def main(food, me) :
food = [int(i) for i in food.split(",")]
me = [[int(i) for i in seg.split(",")] for seg in me.split("/")]
head = me[0]
v = [head[0] - me[1][0], head[1] - me[1][1]]
vn = [food[0] - head[0], food[1] - head[1]]
if 0 not in vn :
vn[v.index(0)-1] = 0
vn[vn.index(0)-1] = vn[vn.index(0)-1] / abs(vn[vn.index(0)-1])
if v == vn :
return "..."
elif [v[0] + vn[0], v[1] + vn[1]] == [0, 0] :
return random.choice(("R", "L"))
else :
return "R" if [-v[1], v[0]] == vn else "L"
if __name__ == "__main__" :
print main(*sys.argv[1:3])
ViciousViper Cipher python bot.py
И их спички:
Управляющая программа
Вы можете найти управляющую программу на github вместе со всеми ботами и записями прошлых матчей.
Требования:
- Python 2 + библиотеки
numpy
иpillow
(вы можете проверить, если они присутствуют черезpython -c "import numpy, PIL"
, если он выдает ошибки, модули отсутствуют) - Для работы контроллера требуется копирование полной структуры папок.
- Зарегистрируйте своего бота (ов) в
./snakes/list.txt
файле в стилеCoolSnake MyOwnName Command To Run My Bot
- Поместите своего бота в каталог с его именем под
./snakes
- Ни ваше, ни имя вашего бота не могут содержать пробелы!
Использование:
python run.py [-h] [-n int] [-s int] [-l int] [-c int] [-g]
python run.py
запустит турнир со всеми ботами, зарегистрированными в list.txt и стандартными свойствами. Дополнительные параметры:
-h
отображает сообщение помощи-n int
раунды сражений за каждую комбинацию противников-s int
определяет размер сетки (ширина и высота)-l int
устанавливает необходимую длину для победы-c int
устанавливает предел циклов-g
или не--no-gifs
создает гифки матчей
источник
Ответы:
Дзен - C ++
Этот Кодемон здесь не для того, чтобы есть, но чтобы сражаться. Он знает, что мертвый враг не украдет его яблоки.
Name| Author |Launch with
Zen GholGoth21 Zen.exe
стратегия
Все (за исключением CircleOfLife) спешат на яблоки, но не на дзен, не всегда. Если враг может достать еду до него, он просто ждет в центре (что? Но что вы здесь делаете, CircleOfLife?). Иначе, Дзен идет на яблоко и оборачивается, ожидая, что что-то случится. На самом деле он использует яблоко в качестве приманки.
Я ничего не кодировал против любопытной стратегии CircleOfLife, потому что он может выиграть только с очень большой удачей.
Код
Это полный код проекта C ++. Вырежьте 11 исходных файлов и Makefile и скомпилируйте с
make
Или загрузите zip-файл: Zen.zip
Результаты
И несколько типичных сражений (ViciousViper против Zen и SneakySnake против Zen):
Редактировать : я добавляю эту очень интересную битву против CircleOfLife:
источник
CircleOfLife (Java)
CircleOfLife Manu java CircleOfLife
(Скомпилировать сjavac CircleOfLife.java
)Бежит к середине и остается там. Я надеюсь, что некоторые материалы попадут в нее по пути к еде.
источник