Boty kodowe
Nienawidzę zmiennych prywatnych i chronionych. Chcę tylko uzyskać dostęp do wszystkiego i wszystkiego!
Jeśli jesteś podobny do mnie, to wyzwanie jest dla Ciebie!
Napisz bota, który współpracuje w harmonii z innymi botami, dzięki czemu inne boty będą robić to, co chcesz. Jesteś programistą i wiesz, jak mają działać. Twoim zadaniem jest konwersja jak największej liczby innych botów na twoje sposoby.
Kod
Będziesz miał 24 linie kodu do napisania swojego bota. W każdej turze każdy bot wykona kolejno 1 linię.
Każdy bot przechowuje 5 zmiennych Aprzez E. Ai Bsą do użytku osobistego, Cprzechowuje następny wiersz do wykonania, Dzapisuje bieżący kierunek i Ejest liczbą losową. Zmienne zaczynają się od 0, z wyjątkiem D, które zaczynają się od losowej wartości. Wszystkie zmienne przechowują tylko 0–23. Liczby większe lub mniejsze będą modulowane przez 24.
W tym poście użyję przeciwnika jako sąsiadującego bota, z którym się zmierzysz
Każda linia musi zawierać jedno z następujących 5 poleceń:
Flagnic nie robi. Z wyjątkiem tego, jak wygrywaszMoveprzesuwa twojego bota wDkierunku th. Jeśli bot już zajmuje to miejsce, nie nastąpi ruchCopy Var1 Var2kopiuje zawartość Var1 do Var2If Condition Line1 Line2Jeśli warunek jest spełniony, wykonuje wiersz 1, w przeciwnym razie wiersz 2Block Var1blokuje następny zapis zmiennej
Zmiennej można użyć w następujący sposób:
#Varużyje zmiennej jako numeru linii. Jeśli Ajest 17, Copy #8 #Askopiuje zawartość linii 8 do linii 17.
*Varużyje zmiennej twojego przeciwnika. Copy 5 *Custawi Czmienną przeciwnika na 5
Var+Vardodanie dwóch zmiennych. Copy D+1 Dobróci bota w prawo
Gdy Dzostanie użyty jako kierunek, [North, East, South, West][D%4]zostanie użyty
Te modyfikatory mogą być powiązane: Copy *#*C #9skopiują kolejną linię, którą przeciwnik wykona do twojego własnego kodu w linii 9. **Dodnosi się do Dzmiennej przeciwnika przeciwnika .
Stan zostanie oceniony w następujący sposób:
- Jeżeli
Var:- Jeśli Var jest
AprzezC, zwróci true jeśli Var jest niezerowe, inny fałszywy. - Jeśli Var jest
D, zwróci true, jeśli w tymDkierunku jest bot, w przeciwnym razie false - Jeśli Var jest
E, zwróci true, jeśli E jest nieparzyste, w przeciwnym razie false - Jeśli Var jest linią, zwróci true, jeśli jest linią Flag
- Jeśli Var jest
- Jeżeli
Var1=Var2:- Zwraca true, jeśli oba są
A-Ei są równe tej samej liczbie - Zwraca true, jeśli oba są liniami, a typ linii jest równy
- Zwraca true, jeśli oba są
- Jeżeli
Var1==Var2:- Zwraca true, jeśli oba są
A-Ei są równe tej samej liczbie - Zwraca true, jeśli oba są liniami i są identyczne (flagi z różnych botów nie będą równe)
- Zwraca true, jeśli oba są
50 botów każdego typu zostanie umieszczonych w świecie toroidalnym według następującego wzoru:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.
Po każdej grze w 5000 tur, flagi każdego bota zostaną policzone. Dostajesz punkt, jeśli bot ma więcej twojej flagi niż jakikolwiek inny rodzaj flagi. W przypadku remisu między Nbotami punkty nie są przyznawane.
Będzie 10 gier, a wyniki zostaną zgromadzone na końcu.
Notatki dodatkowe
Komentarze na końcu linii są dozwolone i są oznaczone symbolem //
Próba zrobienia czegoś, co nie ma sensu, takiego jak dodanie do linii, nic nie da
Próba zrobienia czegoś na nieistniejącym bocie nic nie da
Nieskończona rekurencja w Iftestamencie zakończy się bez wykonania linii
If nie zmienia wartości C
A Blocknie wygasa, dopóki ktoś nie spróbuje do niego napisać
Wiele zmiennych i linii może być blokowanych jednocześnie
Blockwprowadzenie zmiennej wiele razy będzie blokować wiele razy, dopóki druga instrukcja blokowa będzie w innym wierszu kodu niż pierwsza
Spacje są dozwolone tylko między argumentami (i po poleceniu)
Jeśli bot ma mniej niż 24 linie, flaga będzie resztą linii.
Przykładowy program
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
Program będzie prowadzony przez mojego kontrolera Python tutaj .
Kontroler Java jest tutaj Jest szybki i wygląda znacznie lepiej niż Python.
Tablica wyników:
- 6837 $ Kopiuj
- 3355 Lockheed
- 1695 MindControl
- 967 bizantyjskie
- 959 AttackOrElse
- 743 Cadmyllion
- 367 Grypa
- 251 TheCommonCold
- 226 Mag
- 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 Podstępny
- 29 HappyAsAClam
- 25 NanoVirus
- 21 Nullifier
- 19 Nanoviris
- 17 BoringCopybot
- 16 Movebot
- 14 Flagbot
- 13 Neutralizator
- 12 Rak
- 9 DNAbot
- 9 Pasożyt
- 8 MetaIndidious
- 8 Zmiana marki
- 8 AdaptiveBot
- 8 ReproducingBot
- 8 KungFuBot
- 5 QuickFreezerbot
- 4 Atakujący