Коди-боти
Я ненавиджу приватні та захищені змінні. Я просто хочу отримати доступ до всього і всього!
Якщо ви схожі на мене, то цей виклик для вас!
Напишіть бота, який працює разом з іншими ботами, змушує інших ботів робити те, що ви хочете. Ви програміст і знаєте, як все має працювати. Ваше завдання - перетворити якомога більше інших ботів на ваші шляхи.
Кодекс
У вас буде 24 рядки коду, щоб написати бота. Кожен виток, кожен бот буде виконувати 1 рядок послідовно.
Кожен бот зберігає 5 змінних A
через E
. A
і B
для особистого використання, C
зберігає наступний рядок для виконання, D
зберігає поточний напрямок і E
є випадковим числом. Змінні починаються з 0, за винятком D
, який починається з випадкового значення. Усі змінні зберігають лише 0-23. Число більших чи менших буде модульовано на 24.
У цій посаді я буду використовувати опонента, щоб бути сусіднім ботом, з яким ви стикаєтесь
Кожен рядок повинен містити одну з наступних 5 команд:
Flag
нічого не робить. За винятком того, як ви виграєтеMove
переміщує вашого бота в томуD
напрямку. Якщо бот вже займає простір, переміщення не відбудетьсяCopy Var1 Var2
копіює вміст Var1 у Var2If Condition Line1 Line2
Якщо Умова вірна, виконується Line1, інакше Line2Block Var1
блокує наступне записування змінної
Змінна може бути використана наступним чином:
#Var
використовуватиме змінну як номер рядка Якщо A
17, Copy #8 #A
скопіюйте вміст рядка 8 на рядок 17.
*Var
використовуватиме змінну вашого опонента. Copy 5 *C
встановить C
змінну опонента на 5
Var+Var
додавання двох змінних. Copy D+1 D
буде обертати бота праворуч
Коли D
використовується як напрямок, [North, East, South, West][D%4]
буде використовуватися
Ці модифікатори можуть бути ланцюговими: Copy *#*C #9
скопіює наступний рядок, який ваш опонент виконає у ваш власний код у рядку 9. **D
відноситься до D
змінної опонента опонента .
Умова оцінюється наступним чином:
- Якщо
Var
:- Якщо Var це
A
черезC
, він повертає істину , якщо Var відмінний від нуля, інакше брехня. - Якщо Var є
D
, він повернеться true, якщо в цьомуD
напрямку є бот , інакше false - Якщо Var є
E
, він повернеться істинним, якщо E непарним, інакше хибним - Якщо Var - це рядок, вона поверне true, якщо це лінія Flag
- Якщо Var це
- Якщо
Var1=Var2
:- Повертає істину, якщо обидва є
A-E
, і дорівнює однаковій кількості - Повертає істину, якщо обидва є рядками, а тип рядка рівним
- Повертає істину, якщо обидва є
- Якщо
Var1==Var2
:- Повертає істину, якщо обидва є
A-E
, і дорівнює однаковій кількості - Повертає істину, якщо обидва є рядками та однаковими (прапори різних ботів не будуть рівними)
- Повертає істину, якщо обидва є
50 ботів кожного типу будуть розміщені в тороїдальному світі за такою схемою:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.
Після кожної гри в 5000 обертів прапори на кожному боті будуть рахуватися. Ви отримуєте бал, якщо бот має більше вашого прапора, ніж будь-який інший тип прапора. Якщо випадок краватки міжN
ботами, бали не наводяться.
Буде 10 ігор, а рахунки будуть накопичені в кінці.
Бічні примітки
Коментарі в кінці рядка дозволені та позначаються символом //
Спроба зробити щось, що не має сенсу, наприклад, додавання до рядка, нічого не призведе
Спроба зробити щось на неіснуючому боті нічого не зробить
Нескінченна рекурсія на If
заповіт закінчується, не виконуючи жодного рядка
If
не змінює значення C
А Block
Чи не закінчується , поки хто намагається записати в нього
Кілька змінних і рядків можуть бути заблоковані одночасно
Block
Якщо змінна множина разів заблокує кілька разів, доки другий оператор блоку знаходиться в іншому рядку коду, ніж ваш перший
Пробіли дозволені лише між аргументами (і після команди)
Якщо бот коротший, ніж 24 рядки, прапор буде рештою рядків.
Зразок програми
Copy 2 C //Skip to the If line
Flag //Where I'm storing my flag
Move //Move in the D'th direction
If D #5 #2 //If there's a bot, copy code, otherwise, move!
Copy #1 *#E //Copy my flag onto a random spot in my bot's code
Copy 2 C //Skip back to the If line
Програму запустить мій контролер Python тут .
Контролер Java знаходиться тут Це швидко і виглядає набагато краще , ніж пітона один.
Табло:
- 6837 $ Копіювати
- 3355 Локхід
- 1695 MindControl
- 967 Візантійський
- 959 AttackOrElse
- 743 Cadmyllion
- 367 Грип
- 251 TheCommonCold
- 226 Маг
- 137 HideBlockAttack
- 129 RowBot
- 123 FastMoveCloneDodge
- 112 FastForwardClone
- 96 QuickFreeze
- 71 RepairAndProtect
- 96 Суперфриз
- 93 RovingVirus
- 80 ForwardClone
- 77 FreezeTag
- 68 Палімпсесте
- 62 BlockFreezeAttack
- 51 RushAttackDodge
- 46 Блокер
- 40 TurretMaker
- 37 Копікат
- 37 Камікадзе
- 35 FlagInjector
- 33 RandomCopier
- 31 Підступний
- 29 HappyAsAClam
- 25 Нановірус
- 21 Нуліфікатор
- 19 Нановіріс
- 17 BoringCopybot
- 16 Movebot
- 14 Флагбот
- 13 Нейтралізатор
- 12 Рак
- 9 DNAbot
- 9 Паразит
- 8 MetaInsidious
- 8 Ребрендинг
- 8 AdaptiveBot
- 8 РозмноженняBot
- 8 KungFuBot
- 5 QuickFreezerbot
- 4 Нападник