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 à Atravers E. Aet Bsont à usage personnel, Cstocke la ligne suivante à exécuter, Dstocke la direction actuelle et Econstitue un nombre aléatoire. Les variables commencent à 0, sauf pour Dqui 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:
Flagne fait rien. Sauf que c'est comme ça qu'on gagneMovedéplace votre bot dans laDdirection th. Si un bot occupe déjà l'espace, aucun mouvement ne se produiraCopy Var1 Var2copie le contenu de Var1 dans Var2If Condition Line1 Line2Si la condition est vraie, exécute Line1, sinon Line2Block Var1bloque la prochaine écriture sur une variable
Une variable peut être utilisée comme suit:
#Varutilisera la variable comme numéro de ligne. Si Ais est 17, Copy #8 #Acopiera le contenu de la ligne 8 sur la ligne 17.
*Varutilisera la variable de votre adversaire. Copy 5 *Cmettra la Cvariable de l'adversaire à 5
Var+Varajouter les deux variables. Copy D+1 Dfera tourner le bot vers la droite
Quand Dest utilisé comme direction, [North, East, South, West][D%4]sera utilisé
Ces modificateurs peuvent être chaînés: Copy *#*C #9ils copieront la ligne suivante que votre adversaire exécutera dans votre propre code, à la ligne 9. **D fait référence à la Dvariable de l'adversaire de votre adversaire .
Une condition sera évaluée comme suit:
- Si
Var:- Si Var est
AcompletC, 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 laDdirection 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-Evalables 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-Evalables 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
BlockUne 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