Добро пожаловать в Code Bots 2!
Вы усвоили свой урок со времени последних ботов. Вы пытались найти больше способов разместить больше действий в меньшем количестве строк, и теперь у вас наконец есть это. Вы собираетесь создать управляемый событиями Code Bot.
Ваш бот должен состоять из 24 строк. Каждая строка соответствует одному из двух форматов:
Condition:Action
или же
Action
У вашего бота также достаточно памяти для хранения 5 целых чисел, названных Aчерез E. Целое число может хранить значения от 0 до 23.
Каждый ход вы будете выполнять линию C, если не выполняется одно из условий. Если это так, то Cбудет содержать номер строки условия, которая является истинной, и тогда эта строка будет выполнена. В конце каждого хода Cбудет увеличиваться.
Есть доступные условия:
Startверно только на первом повороте. Вы должны иметь это в своем коде ровно один разBotAt(N)истина, если в месте, указанном N, есть ботEquals(A,B)истинно, если A равно B. Они могут быть разных типов, если так, они не будут равны.Modified(A)Значение true, еслиAбыло скопировано во время последнего хода.Aдолжно быть именем переменной, строкой или условиемAny(C1,C2,...)верно, если выполняется любое из условийNone(C1,C2,...)верно, если ни одно из условий не выполняетсяAll(C1,C2,...)верно, если все условия выполняютсяNot(C)верно, если C ложно.Cдолжно быть условие.
Переменные могут быть в одном из следующих форматов. Первые 9 являются числовыми и могут использоваться для любого случая, когда N используется на этой странице.
A,B,C,D,E- Число от 0 до 23
Thisвернет номер строки, в которой он находится в данный моментAdd(N1,N2,...)вернет сумму всех значенийSub(N1,N2)вернет N1 минус N2Mult(N1,N2,...)вернет произведение всех значенийDiv(N1,N2)вернет N1, деленное на N2Mod(N1,N2)вернет N1 мод N2OVar(N)примет имя переменной и вернет переменную противникаLine(N)вернет N-ую строку в вашем кодеType(N)вернет N-й тип строки в вашем коде (типы - это имена действий)Cond(N)вернет условие на N-й строкеCondType(N)вернет тип условия в N-й строке (типы - это имена условий)OLine(N)вернет N-ую строку в коде вашего оппонентаOType(N)вернет N-й тип строки в коде вашего оппонентаOCond(N)вернет условие на N-й строкеOCondType(N)вернет тип условия в N-й строке
Aи Bпредназначены для вашего личного использования, Cиспользуются для определения того, какую строку выполнять в вашем коде, и Dиспользуются в качестве направления. Каждое значение Dотносится к разным квадратам и парам направлений. Eвыдает случайное значение каждый раз. Dи Eбудет инициализирован случайным значением, в противном случае 0.
Используемое направление будет [North,East,South,West][D%4]. Ваш противник - бот в непосредственной близости от этого поля.
Вам доступны 4 действия:
Moveпереместит вас на 1 клетку вперед вDнаправлении th Если там есть бот, вы не будете двигаться.Copy(A,B)скопирует переменнуюAвB.Bне может быть числовым значением, кроме имени переменной.AиBне может быть разных типов. Копирование строки не копирует условие.Flagничего не делает. Бот с наибольшим количеством флагов в вашем коде получит очко. Бот с наибольшим количеством очков выигрывает.If(C,L1,L2)выполнит строку,L1еслиCtrue, иначе выполняетL2.Cявляется условием, иL1иL2должно быть строки.
Большая картина
50 копий каждого бота будут размещены в мире. Ваша цель - собрать как можно больше ботов. За каждого бота, который имеет больше вашего типа флага, чем любой другой тип флага, вы получаете очко.
Боты будут размещены следующим образом:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Будет проведено 10 игр, и очки будут усреднены по всем играм, определяя, кто является победителем.
Примечания стороны
Если применимо несколько условий, то Startбудет выполнено то, которое следует немедленно
Боты будут плотно упакованы, но вы не начнете соседствовать с другим ботом. (Технически это будет тот же формат, что и последние CodeBots)
Поскольку этот вызов не был размещен в «песочнице» (чтобы никто не получил преимущества), я оставляю за собой право изменить мелкие детали для справедливости или дополнительных возможностей. Также, если есть ошибка в бегуне CodeBots, я ее исправлю, даже если бот зависел от этой ошибки для ее успеха. Я стараюсь быть максимально справедливым .
Рекурсивные Ifоператоры не будут выполняться
Если ваш бот короче 24 строк, остальные строки будут заполнены Flag
Помните, когда копируете на свой C, это Cувеличивается в конце вашего хода.
Интерпретатор CodeBots можно найти здесь . Он включает в себя файл .jar для легкого выполнения. Просто добавьте своего бота в папку с ботами
множество
- 893,9 Борг
- 1.3 LazyLioness
- 0,9 Защитник
- 0.5 Flagger
- 0.4 CliqueBot
- 0,4 Коварный
- 0.3 Атакующий
- 0,3 Гард
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0,2 Страж
- 0,2 Драйвби
- 0.0 AntiInsidious
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 калькулятор
- 0.0 TestBot
- 0.0 подражатель
ОБНОВИТЬ
Строки кода теперь поворачиваются при просмотре кода вашего оппонента. Это означает, что линия 1 вашего оппонента может быть линией 14 (или любой другой линией). Бот будет иметь фиксированное смещение, которое будет смещать его линии по Xколичеству при просмотре противником . CПеременная противника также будет смещена на ту же Xсумму. Xне изменится в одной и той же игре, но изменится от игры к игре.