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 Aprzez 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 Cbędzie zawierał numer wiersza warunku, który jest prawdziwy, a następnie wiersz zostanie wykonany. Pod koniec każdej tury Cbędą zwiększane.
Dostępne są warunki:
Startdotyczy 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śliAzostało skopiowane podczas ostatniej tury.Amusi 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.Cmusi 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
Thiszwró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
Ai Bsą do użytku osobistego, Csłużą do określania, która linia ma zostać wykonana w kodzie i Dsłuży jako kierunek. Każda wartość Dodnosi się do innej pary kwadratów i kierunków. Eza każdym razem tworzy losową wartość. Di Ezostanie 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:
Moveprzesunie cię o 1 pole do przodu w tymDkierunku. Jeśli jest tam bot, nie będziesz się ruszać.Copy(A,B)skopiuje zmiennąAdoB.Bnie może być wartością liczbową, z wyjątkiem nazwy zmiennej.AiBnie mogą być różnych typów. Kopiowanie linii nie kopiuje warunku.Flagnic 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,L1jeśliCjest prawdą, w przeciwnym razie wykonaL2.Cjest warunkiemL1iL2musi 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, Startzostanie 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 .
IfInstrukcje 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 Cjest 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 Xkwotę, gdy ogląda go przeciwnik . CZmienna przeciwnika również zostanie zrównoważona o tę samą Xkwotę. Xnie zmieni się w tej samej grze, ale zmieni się z gry do gry.