Bot di codice
Odio le variabili private e protette. Voglio solo accedere a qualsiasi cosa!
Se sei come me, questa sfida è per te!
Scrivi un robot che lavora insieme in armonia con altri robot per far sì che altri robot facciano quello che vuoi. Sei un programmatore e sai come dovrebbero funzionare le cose. Il tuo compito è convertire il maggior numero possibile di robot nei tuoi modi.
Il codice
Avrai 24 righe di codice per scrivere il tuo bot. Ad ogni turno, ogni bot eseguirà 1 riga in sequenza.
Ogni bot memorizza 5 variabili Aattraverso E. Ae Bsono per uso personale, Cmemorizza la riga successiva da eseguire, Dmemorizza la direzione corrente ed Eè un numero casuale. Le variabili iniziano da 0, ad eccezione di D, che inizierà con un valore casuale. Tutte le variabili hanno solo un archivio da 0 a 23. I numeri più grandi o più piccoli saranno modulati di 24.
In questo post, userò l'avversario come bot adiacente che stai affrontando
Ogni riga deve contenere uno dei seguenti 5 comandi:
Flagnon fa nulla. Solo che è come vinciMovesposta il tuo robot nellaDth direzione. Se un bot occupa già lo spazio, non si verificherà alcuna mossaCopy Var1 Var2copia il contenuto di Var1 in Var2If Condition Line1 Line2Se la condizione è vera, esegue Line1, altrimenti Line2Block Var1blocca la scrittura successiva su una variabile
Una variabile può essere utilizzata come segue:
#Varutilizzerà la variabile come numero di riga. Se Aè 17, Copy #8 #Acopierà il contenuto della riga 8 sulla riga 17.
*Varutilizzerà la variabile del tuo avversario. Copy 5 *Cimposterà la Cvariabile dell'avversario per 5
Var+Varaggiungere le due variabili. Copy D+1 Druoterà il bot verso destra
Quando Dviene utilizzato come direzione, [North, East, South, West][D%4]verrà utilizzato
Questi modificatori possono essere concatenati: Copy *#*C #9copieranno la riga successiva che il tuo avversario eseguirà nel tuo codice alla riga 9. si **Driferisce alla Dvariabile dell'avversario del tuo avversario .
Una condizione verrà valutata come segue:
- Se
Var:- Se Var è
ApassatoC, restituirà true se Var è diverso da zero, altrimenti false. - Se Var è
D, tornerà vero se c'è un bot nellaDdirezione th, altrimenti falso - Se Var è
E, tornerà vero se E è dispari, altrimenti falso - Se Var è una linea, tornerà vero se è una linea Flag
- Se Var è
- Se
Var1=Var2:- Restituisce vero se entrambi lo sono
A-Eed equivale allo stesso numero - Restituisce vero se entrambe sono linee e il tipo di linea è uguale
- Restituisce vero se entrambi lo sono
- Se
Var1==Var2:- Restituisce vero se entrambi lo sono
A-Eed equivale allo stesso numero - Restituisce vero se entrambe sono linee e sono identiche (le bandiere di diversi robot non saranno uguali)
- Restituisce vero se entrambi lo sono
50 robot di ogni tipo verranno posizionati in un mondo toroidale nel seguente schema:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.
Dopo ogni partita di 5.000 turni, verranno conteggiate le bandiere su ciascun bot. Ottieni un punto se un bot ha più bandiera di qualsiasi altro tipo di bandiera. Se il caso di un pareggio tra i Nrobot, non viene assegnato alcun punto.
Ci saranno 10 partite e i punteggi verranno accumulati alla fine.
Note laterali
I commenti di fine riga sono consentiti e sono indicati con //
Tentare di fare qualcosa che non ha senso, come aggiungere a una linea, non farà nulla
Tentare di fare qualcosa su un bot inesistente non farà nulla
La ricorsione infinita su una Ifterminerà senza che venga eseguita alcuna linea
If non cambia il valore di C
A Blocknon scade fino a quando qualcuno non tenta di scrivergli
Più variabili e linee possono essere bloccate contemporaneamente
Blockl'inserimento di una variabile più volte si bloccherà più volte a condizione che la seconda istruzione di blocco si trovi su una riga di codice diversa dalla prima
Gli spazi sono consentiti solo tra argomenti (e dopo il comando)
Se un bot è più corto di 24 linee, Flag sarà il resto delle linee.
Programma di esempio
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
Il programma verrà eseguito dal mio controller Python qui .
Il controller Java è qui È veloce e sembra molto meglio di quello di Python.
Pagelle:
- 6837 $ Copia
- 3355 Lockheed
- 1695 MindControl
- 967 bizantino
- 959 AttackOrElse
- 743 Cadmyllion
- 367 Influenza
- 251 TheCommonCold
- 226 Magus
- 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 Blocker
- 40 TurretMaker
- 37 Copycat
- 37 Kamikaze
- 35 FlagInjector
- 33 RandomCopier
- 31 Insidioso
- 29 HappyAsAClam
- 25 NanoVirus
- 21 annullatore
- 19 Nanoviris
- 17 BoringCopybot
- 16 Movebot
- 14 Flagbot
- 13 Neutralizzatore
- 12 Cancro
- 9 DNAbot
- 9 Parassita
- 8 MetaInsidious
- 8 Rebranding
- 8 AdaptiveBot
- 8 ReproducingBot
- 8 KungFuBot
- 5 QuickFreezerbot
- 4 Attaccante