Ласкаво просимо до 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)вірно, якщо це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напрямку. Якщо там є бот, ти не рухатимешся.Copy(A,B)скопіює зміннуAвB.Bне може бути числовим значенням, за винятком імені змінної.AіBне може бути різного типу. Копіювання рядка не копіює умову.Flagнічого не робить. Бот з найбільшою кількістю прапорів у вашому коді отримає бал. Перемагає бот з найбільшою кількістю очок.If(C,L1,L2)буде виконувати рядок,L1якщоCце правда, інше виконує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 Ледачий левиця
- 0,9 захисника
- 0,5 Флаггер
- 0,4 CliqueBot
- 0,4 Підступно
- 0,3 Нападник
- 0,3 Гард
- 0,3 SingleTarget
- 0,2 FreezeBot
- 0,2 Sentinel
- 0,2 Драйбі
- 0,0 Протизалежний
- 0,0 MoveBot
- 0,0 CliqueBorg
- 0,0 Калькулятор
- 0,0 Тест
- 0,0 Імітатор
ОНОВЛЕННЯ
Рядки коду тепер обертаються під час перегляду коду опонента. Це означає, що у вашому противнику рядком 1 може бути рядок 14 (або будь-який інший рядок). Бот матиме фіксований зсув, який компенсує його рядки за Xкількістю, коли його переглядає противник . CЗмінна супротивника також буде компенсована на стільки ж X. Xне зміниться в межах однієї гри, але зміниться від гри до гри.