Witamy w Code Bots 2!
Nauczyłeś się tej lekcji od ostatnich botów Code. Próbowałeś wymyślić więcej sposobów dopasowania większej liczby akcji w mniejszej liczbie linii, a teraz w końcu to masz. Stworzysz Code Bot sterowanego zdarzeniami.
Twój bot musi składać się z 24 linii. Każda linia ma jeden z dwóch formatów:
Condition:Action
lub
Action
Twój bot posiada również wystarczającą pamięć do przechowywania liczb całkowitych 5 nazwanych A
przez E
. Liczba całkowita może przechowywać wartości od 0 do 23.
W każdej turze wykonasz linię C
, chyba że jeden z warunków jest spełniony. Jeśli tak, wówczas C
będzie zawierał numer wiersza warunku, który jest prawdziwy, a następnie wiersz zostanie wykonany. Pod koniec każdej tury C
będą zwiększane.
Dostępne są warunki:
Start
dotyczy tylko pierwszej tury. Musisz to mieć w swoim kodzie dokładnie razBotAt(N)
jest prawdą, jeśli w miejscu zdefiniowanym przez N znajduje się botEquals(A,B)
jest prawdziwe, jeśli A jest równe B. Mogą być różnych typów, jeśli tak, to nie będą równe.Modified(A)
jest prawdziwe, jeśliA
zostało skopiowane podczas ostatniej tury.A
musi być nazwą zmiennej, linią lub warunkiemAny(C1,C2,...)
jest prawdziwe, jeśli spełniony jest dowolny z warunkówNone(C1,C2,...)
jest prawdziwe, jeśli żaden z warunków nie jest spełnionyAll(C1,C2,...)
jest prawdziwe, jeśli wszystkie warunki są spełnioneNot(C)
jest prawdziwe, jeśli C jest fałszywe.C
musi być warunkiem.
Zmienne mogą mieć jeden z następujących formatów. Pierwszych 9 jest numerycznych i można z nich korzystać za każdym razem, gdy na tej stronie użyto N.
A
,B
,C
,D
,E
- Liczba od 0 do 23
This
zwróci numer linii, na której się aktualnie znajdujeAdd(N1,N2,...)
zwróci sumę wszystkich wartościSub(N1,N2)
zwróci N1 minus N2Mult(N1,N2,...)
zwróci iloczyn wszystkich wartościDiv(N1,N2)
zwróci N1 podzielone przez N2Mod(N1,N2)
zwróci N1 mod N2OVar(N)
zaakceptuje nazwę zmiennej i zwróci zmienną przeciwnikaLine(N)
zwróci N-tą linię w twoim kodzieType(N)
zwróci N-ty typ linii w twoim kodzie (typy to nazwy akcji)Cond(N)
zwróci warunek w N-tej liniiCondType(N)
zwróci typ warunku w N-tej linii (typy to nazwy warunków)OLine(N)
zwróci N-tą linię w kodzie przeciwnikaOType(N)
zwróci N-ty typ linii w kodzie przeciwnikaOCond(N)
zwróci warunek w N-tej liniiOCondType(N)
zwróci typ warunku w N-tej linii
A
i B
są do użytku osobistego, C
służą do określania, która linia ma zostać wykonana w kodzie i D
służy jako kierunek. Każda wartość D
odnosi się do innej pary kwadratów i kierunków. E
za każdym razem tworzy losową wartość. D
i E
zostanie zainicjowany na losową wartość, w przeciwnym razie 0
.
Zastosowany kierunek będzie [North,East,South,West][D%4]
. Twój przeciwnik jest botem na bezpośrednim polu w tym kierunku.
Dostępne są 4 akcje:
Move
przesunie cię o 1 pole do przodu w tymD
kierunku. Jeśli jest tam bot, nie będziesz się ruszać.Copy(A,B)
skopiuje zmiennąA
doB
.B
nie może być wartością liczbową, z wyjątkiem nazwy zmiennej.A
iB
nie mogą być różnych typów. Kopiowanie linii nie kopiuje warunku.Flag
nic nie robi. Bot z największą liczbą flag w twoim kodzie dostanie punkt. Bot z największą liczbą punktów wygrywa.If(C,L1,L2)
wykona wiersz,L1
jeśliC
jest prawdą, w przeciwnym razie wykonaL2
.C
jest warunkiemL1
iL2
musi być liniami.
Wielkie zdjęcie
50 kopii każdego bota zostanie umieszczonych na świecie. Twoim celem jest doprowadzenie flagi do jak największej liczby botów. Za każdego bota, który ma więcej typów flag niż jakikolwiek inny typ flagi, otrzymasz punkt.
Boty zostaną umieszczone w następujący sposób:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Rozegranych zostanie 10 gier, a punkty zostaną uśrednione we wszystkich grach, określając, kto jest zwycięzcą.
Notatki dodatkowe
Jeśli ma zastosowanie wiele warunków, Start
zostanie wykonany ten, który nastąpi bezpośrednio
Boty będą ściśle zapakowane, ale nie zaczniesz sąsiadować z innym botem. (Technicznie będzie to ten sam format, co ostatnie CodeBots)
Ponieważ to wyzwanie nie zostało opublikowane w piaskownicy (aby dać nikomu przewagę), zastrzegam sobie prawo do zmiany drobnych szczegółów w celu zapewnienia uczciwości lub dodatkowych możliwości. Ponadto, jeśli w programie Run CodeBots występuje błąd, zmienię go, nawet jeśli bot odniósł sukces. Staram się być jak najbardziej sprawiedliwy .
If
Instrukcje rekurencyjne nie będą wykonywane
Jeśli twój bot ma mniej niż 24 linie, pozostałe linie zostaną wypełnione Flag
Pamiętaj, gdy kopiujesz do własnego C
, który C
jest zwiększany pod koniec twojej tury.
Interpretator CodeBots można znaleźć tutaj . Zawiera plik .jar dla łatwego wykonania. Po prostu dodaj swojego bota do folderu botów
Wyniki
- 893,9 Borg
- 1.3 Leniwy
- 0,9 obrońca
- 0,5 Flagger
- 0.4 CliqueBot
- 0.4 Podstępny
- 0.3 Atakujący
- 0,3 Gard
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0.2 Sentinel
- 0.2 Driveby
- 0.0 Przeciwnie do podejrzeń
- 0.0 MoveBot
- 0,0 CliqueBorg
- Kalkulator 0,0
- 0.0 TestBot
- 0.0 Imitator
AKTUALIZACJA
Linie kodu są teraz obracane podczas przeglądania kodu przeciwnika. Oznacza to, że linia 1 przeciwnika może być linią 14 (lub dowolną linią). Bot będzie miał stałe przesunięcie, które spowoduje przesunięcie jego linii o X
kwotę, gdy ogląda go przeciwnik . C
Zmienna przeciwnika również zostanie zrównoważona o tę samą X
kwotę. X
nie zmieni się w tej samej grze, ale zmieni się z gry do gry.