Кодовые боты
Я ненавижу частные и защищенные переменные. Я просто хочу получить доступ ко всему и всему!
Если вы похожи на меня, то этот вызов для вас!
Написать бота, который работает вместе в гармонии с другими ботами, заставляет других ботов делать то, что вы хотите. Вы программист, и вы знаете, как все должно работать. Ваша задача - конвертировать как можно больше других ботов на ваши пути.
Код
У вас будет 24 строки кода для написания вашего бота. Каждый ход, каждый бот будет выполнять 1 строку последовательно.
Каждый бот хранит 5 переменных A
через E
. A
и B
предназначены для личного использования, C
сохраняет следующую строку для выполнения, D
сохраняет текущее направление и E
является случайным числом. Переменные начинаются с 0, за исключением случая D
, который начинается со случайного значения. Все переменные хранят только 0-23. Числа, большие или меньшие, будут модулироваться на 24.
В этом посте я буду использовать оппонента как соседнего бота, с которым вы сталкиваетесь
Каждая строка должна содержать одну из следующих 5 команд:
Flag
ничего не делает. Кроме того, как ты выигралMove
перемещает вашего бота вD
направлении th Если бот уже занимает место, никакого движения не произойдетCopy Var1 Var2
копирует содержимое Var1 в Var2If Condition Line1 Line2
Если условие истинно, выполняется строка 1, иначе строка 2Block 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
направлении th, иначе false - Если Var
E
, он вернет true, если E нечетно, иначе false - Если Var это строка, она вернет true, если это строка Flag.
- Если Var это
- Если
Var1=Var2
:- Возвращает true, если оба значения
A-E
равны и равны - Возвращает true, если оба являются строками, а тип линии равен
- Возвращает true, если оба значения
- Если
Var1==Var2
:- Возвращает true, если оба значения
A-E
равны и равны - Возвращает true, если оба являются строками и идентичны (флаги разных ботов не будут равны)
- Возвращает true, если оба значения
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 строки, Flag будет остальные строки.
Пример программы
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 здесь. Он быстрый и выглядит намного лучше, чем Python.
Табло:
- 6837 $ Копия
- 3355 Локхид
- 1695 MindControl
- 967 византийский
- 959 AttackOrElse
- 743 Кадмиллион
- 367 Грипп
- 251 TheCommonCold
- 226 Волхв
- 137 HideBlockAttack
- 129 RowBot
- 123 FastMoveCloneDodge
- 112 FastForwardClone
- 96 QuickFreeze
- 71 Ремонт и защита
- 96 SuperFreeze
- 93 RovingVirus
- 80 ForwardClone
- 77 FreezeTag
- 68 Палимпсесте
- 62 BlockFreezeAttack
- 51 RushAttackDodge
- 46 Блокатор
- 40 TurretMaker
- 37 Copycat
- 37 Камикадзе
- 35 FlagInjector
- 33 RandomCopier
- 31 Коварный
- 29 HappyAsAClam
- 25 нановирус
- 21 Nullifier
- 19 нановирис
- 17 BoringCopybot
- 16 Movebot
- 14 Flagbot
- 13 нейтрализатор
- 12 Рак
- 9 DNAbot
- 9 Паразит
- 8 MetaInsidious
- 8 Ребрендинг
- 8 AdaptiveBot
- 8 Воспроизводящий Бот
- 8 KungFuBot
- 5 QuickFreezerbot
- 4 Атакующий