Bots de code
Je déteste les variables privées et protégées. Je veux juste accéder à tout et n'importe quoi!
Si vous êtes comme moi, alors ce défi est pour vous!
Ecrivez un bot qui fonctionne bien en harmonie avec d'autres bots pour que les autres fassent ce que vous voulez Vous êtes un programmeur et vous savez comment les choses sont censées fonctionner. Votre travail consiste à convertir autant de bots que vous le souhaitez.
Le code
Vous aurez 24 lignes de code pour écrire votre bot. Chaque tour, chaque bot exécutera 1 ligne de manière séquentielle.
Chaque bot stocke 5 variables à A
travers E
. A
et B
sont à usage personnel, C
stocke la ligne suivante à exécuter, D
stocke la direction actuelle et E
constitue un nombre aléatoire. Les variables commencent à 0, sauf pour D
qui commencera à une valeur aléatoire. Toutes les variables ont uniquement la mémoire 0-23. Les nombres plus grands ou plus petits seront modulés par 24.
Dans ce post, je vais utiliser l'adversaire pour être le bot adjacent auquel vous faites face.
Chaque ligne doit contenir l'une des 5 commandes suivantes:
Flag
ne fait rien. Sauf que c'est comme ça qu'on gagneMove
déplace votre bot dans laD
direction th. Si un bot occupe déjà l'espace, aucun mouvement ne se produiraCopy Var1 Var2
copie le contenu de Var1 dans Var2If Condition Line1 Line2
Si la condition est vraie, exécute Line1, sinon Line2Block Var1
bloque la prochaine écriture sur une variable
Une variable peut être utilisée comme suit:
#Var
utilisera la variable comme numéro de ligne. Si A
is est 17, Copy #8 #A
copiera le contenu de la ligne 8 sur la ligne 17.
*Var
utilisera la variable de votre adversaire. Copy 5 *C
mettra la C
variable de l'adversaire à 5
Var+Var
ajouter les deux variables. Copy D+1 D
fera tourner le bot vers la droite
Quand D
est utilisé comme direction, [North, East, South, West][D%4]
sera utilisé
Ces modificateurs peuvent être chaînés: Copy *#*C #9
ils copieront la ligne suivante que votre adversaire exécutera dans votre propre code, à la ligne 9. **D
fait référence à la D
variable de l'adversaire de votre adversaire .
Une condition sera évaluée comme suit:
- Si
Var
:- Si Var est
A
completC
, il retournera vrai si Var est différent de zéro, sinon faux. - Si Var est
D
, il retournera vrai s'il y a un bot dans laD
direction th, sinon faux - Si Var est
E
, il retournera vrai si E est impair, sinon faux - Si Var est une ligne, il retournera true s'il s'agit d'une ligne de drapeau
- Si Var est
- Si
Var1=Var2
:- Renvoie true si les deux sont
A-E
valables et égalent le même nombre - Renvoie true si les deux sont des lignes et si le type de ligne est égal.
- Renvoie true si les deux sont
- Si
Var1==Var2
:- Renvoie true si les deux sont
A-E
valables et égalent le même nombre - Retourne vrai si les deux sont des lignes et sont identiques (les drapeaux de différents robots ne seront pas égaux)
- Renvoie true si les deux sont
50 robots de chaque type seront placés dans un monde toroïdal de la manière suivante:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.
Après chaque tour de 5 000 tours, les drapeaux de chaque bot seront comptés. Vous obtenez un point si un bot a plus de votre drapeau que tout autre type de drapeau. Si le cas d'égalité entreN
robots, aucun point n'est attribué.
Il y aura 10 matchs et les scores seront accumulés à la fin.
Notes de côté
Les commentaires de fin de ligne sont autorisés et sont signalés par //
Essayer de faire quelque chose qui n'a pas de sens, comme ajouter à une ligne ne fera rien
Essayer de faire quelque chose sur un bot inexistant ne fera rien
Récursion infinie sur un If
testament se termine sans qu'aucune ligne ne soit exécutée
If
ne change pas la valeur de C
UNE Block
n'expire pas jusqu'à ce que quelqu'un tente de lui écrire
Plusieurs variables et lignes peuvent être bloquées en même temps
Block
Une variable multiple bloquera plusieurs fois tant que la seconde instruction de bloc est sur une ligne de code différente de celle de votre première
Les espaces ne sont autorisés qu'entre les arguments (et après la commande)
Si un bot est plus court que 24 lignes, Flag sera le reste des lignes.
Exemple de programme
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
Le programme sera exécuté par mon contrôleur Python ici .
Le contrôleur Java est là C'est rapide et a une bien meilleure apparence que celui en python.
Tableau de bord:
- 6837 $ Copie
- 3355 Lockheed
- 1695 MindControl
- 967 byzantine
- 959 AttackOrElse
- 743 cadmyllion
- 367 grippe
- 251 TheCommonCold
- 226 mage
- 137 HideBlockAttack
- 129 RowBot
- 123 FastMoveCloneDodge
- 112 FastForwardClone
- 96 QuickFreeze
- 71 RepairAndProtect
- 96 SuperFreeze
- 93 RovingVirus
- 80 ForwardClone
- 77 FreezeTag
- 68 Palimpseste
- 62 BlockFreezeAttack
- 51 RushAttackDodge
- 46 bloqueur
- 40 Tourellière
- 37 Copycat
- 37 Kamikaze
- 35 FlagInjector
- 33 RandomCopier
- 31 insidieux
- 29 HappyAsAClam
- 25 NanoVirus
- 21 annulation
- 19 Nanoviris
- 17 BoringCopybot
- 16 Movebot
- 14 Flagbot
- 13 neutralisant
- 12 cancer
- 9 DNAbot
- 9 parasites
- 8 MetaInsidious
- 8 Rebranding
- 8 AdaptiveBot
- 8 ReproducingBot
- 8 KungFuBot
- 5 QuickFreezerbot
- 4 attaquant