Wszystkie boty na arenie bitwy nagle dostały szału i nikt nie może wyjaśnić, dlaczego. Ale kogo to obchodzi, o ile nadal są w stanie walczyć - chociaż Brainfuck to jedyny język, który rozumieją.
Minęło trochę czasu od ostatniego zgłoszenia, więc w końcu ogłosimy zwycięzcę BrainFuckedBotsForBattling: Gratulacje dla LymiaAluysia za zwycięstwo z NyurokiMagicalFantasy!
Tablica wyników
| Owner | Bot Score |
|--------------------|-------------------------------|
| LymiaAluysia | NyurokiMagicalFantasy - 600 |
| Sylwester | LethalLokeV2.1 - 585 |
| weston | MickeyV4 - 584 |
| Sp3000 | YandereBot - 538 |
| Comintern | CounterPunch - 512 |
| Sylwester | BurlyBalderV3 - 507 |
| LymiaAluysia | NestDarwin - 493 |
| IstvanChung | Bigger - 493 |
| Manu | DecoyMaster - 489 |
| archaephyrryx | Wut - 478 |
| DLosc | LightfootPlodder - 475 |
| archaephyrryx | 99BottlesOfBats - 461 |
| Sylwester | TerribleThorV2 - 458 |
| MikaLammi | WallE2.0 - 443 |
| Mikescher | MultiVAC - 441 |
| archaephyrryx | Twitcher - 439 |
| Timtech | MetalDetector - 438 |
| AndoDaan | BeatYouMate - 433 |
| csarchon | TheWallmaster - 427 |
| Sparr | SeeSawRush - 412 |
| archaephyrryx | Stitcher - 406 |
| PhiNotPi | RandomOscillator - 403 |
| ccarton | AnybodyThere - 398 |
| Comintern | 2BotsOneCup - 392 |
| kaine | SternBot - 387 |
| PhiNotPi | EvoBot2 - 385 |
| PhiNotPi | EvoBot1 - 381 |
| Brilliand | TimedAttack - 373 |
| Sylwester | ReluctantRanV2 - 373 |
| AndoDaan | PrimesAndWonders - 359 |
| Nax | TruthBot - 357 |
| DLosc | Plodder - 356 |
| weston | FastTrapClearBot - 345 |
| MikaLammi | PolarBearMkII - 340 |
| Sp3000 | ParanoidBot - 336 |
| Moop | Alternator - 319 |
| TestBot | FastClearBot - 302 |
| icedvariables | PyBot - 293 |
| TestBot | DecoyBot - 293 |
| kaine | BestOffense - 291 |
| Geobits | Backtracker - 289 |
| bornSwift | ScribeBot - 280 |
| IngoBuerk | Geronimo - 268 |
| flawr | CropCircleBot - 239 |
| plannapus | CleanUpOnAisleSix - 233 |
| frederick | ConBot - 230 |
| frederick | 128Bot - 222 |
| AndoDaan | EndTitled - 219 |
| PhiNotPi | CloakingDeviceBot - 215 |
| AndoDaan | GetOffMate - 206 |
| DLosc | ScaredyBot - 205 |
| isaacg | CleverAndDetermined - 202 |
| PhiNotPi | CantTouchThis - 202 |
| Moop | StubbornBot - 174 |
| Cruncher | StallBot - 168 |
| IngoBuerk | Gambler - 157 |
| BetaDecay | RussianRoulette - 129 |
| flawr | DoNothingBot - 123 |
| SebastianLamerichs | Dumbot - 115 |
| mmphilips | PacifistBot - 112 |
| SeanD | DontUnderstand - 92 |
| proudHaskeller | PatientBot - 83 |
| frederick | Dumberbot - 70 |
| flawr | MetaJSRandomBot - 68 |
| Darkgamma | TheRetard - 61 |
| BetaDecay | Roomba - 61 |
| BetaDecay | PrussianRoulette - 31 |
| frederick | Dumbestbot - 0 |
Wyniki końcowe od 09.10.2014
EDYCJA 6 : Odrzucone dzienniki z powodu ekstremalnego rozmiaru i czasu działania. Możesz je wygenerować samodzielnie, usuwając komentarz z linii RunThisTournament.py
.
EDYCJA 5 : Zaimplementowano obsługę skrótów w kontrolerze, nie ma już dużych środowisk uruchomieniowych. Ma to taki efekt uboczny, że liczby i nawiasy nie są już traktowane jako komentarze. Nadal możesz ich używać, jeśli chcesz podać wersję z adnotacjami, ale byłoby bardzo pomocne, gdyby istniała również nieskomentowana wersja twojego kodu , więc nie muszę ręcznie usuwać komentarzy. Dzięki!
EDIT4 : Zmieniłem tytuł, ponieważ turniej został usunięty z gorących pytań w sieci. Dzięki @Geobits za zwrócenie na to uwagi!
EDYCJA 3 : Usunięto komentarze w programach bf, ze względu na nieoczekiwany wynik, powinny zostać teraz naprawione. Jeśli ktoś ma problem z usunięciem swoich komentarzy, zgłoś się.
EDYCJA 2 : Ponieważ spowodowało to tajemniczy czas działania na moim dość wolnym komputerze, skróciłem limit czasu z 100000 cykli do 10000 cykli. Zresztą nikt nie zmienił wyniku uruchomionej gry.
EDYCJA 1 : Naprawiono błąd w skrypcie konwersji powodujący, że interpreter nie ignorował liczb w komentowanych programach.
Opis
To jest turniej Brainfuck zainspirowany przez BF Joust . Dwa boty (programy Brainfuck) walczą ze sobą na arenie reprezentowanej przez taśmę pamięci. Każda komórka może przechowywać wartości od -127 do 128 i zawijać je na swoich granicach (więc 128 + 1 = -127).
Prawidłowe instrukcje są podobne do zwykłego Brainfuck, co oznacza:
+ : Increment cell at your pointer's location by 1
- : Decrement cell at your pointer's location by 1
> : Move your memory pointer by 1 cell towards the enemy flag
< : Move your memory pointer by 1 cell away from the enemy flag
[ : Jump behind the matching ']'-bracket if the cell at your pointer's location equals 0
] : Jump behind the matching '['-bracket if the cell at your pointer's location is not 0
. : Do nothing
Arena ma rozmiar od 10 do 30 komórek, które są wybierane pseudolosowo w każdej bitwie. Na obu końcach znajduje się „flaga”, która ma wartość początkową 128, podczas gdy wszystkie inne komórki są zerowane. Celem twojego bota jest wyzerowanie flagi wroga przez 2 kolejne cykle, zanim wyzeruje twoją własną flagę.
Każdy bot zaczyna od własnej flagi, która jest komórką [0] z jego własnej perspektywy. Przeciwnik znajduje się po drugiej stronie taśmy.
[ 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 ]
^ ^
my bot other bot
Oba boty wykonują swoje działanie jednocześnie, jest to uważane za jeden cykl. Gra kończy się po 10000 cyklach lub gdy tylko zostanie spełniony jeden z warunków wygranej. Jeśli jeden z programów osiągnie koniec, po prostu przestanie robić wszystko do końca gry, ale nadal może wygrać.
Warunki wygranej
Twój bot wygrywa pod jednym z następujących warunków:
- Flaga twojego wroga jest zerowana przed twoją
- Twój wróg przesuwa swój wskaźnik z taśmy (wykonuje
>
na twojej fladze lub<
sam) - Wartość twojej flagi jest daleko od zera niż wartość flagi przeciwnika po 10000 cyklach
Zasady
Twój post powinien zawierać nazwę twojego bota i jego kod.
- Aby zwiększyć czytelność kodu, możesz użyć następującej składni skrótu:
- np.
(+)*4
jest taki sam, jak++++
jest to ważne dla każdej instrukcji z wyjątkiem niedopasowanych nawiasów w nawiasach, ponieważ logika pętli koliduje z logiką skrótów. Użyj[-[-[-
zamiast([-)*3
- np.
- Każda inna postać niż
+-><[].
jest komentarzem i dlatego jest ignorowana, z wyjątkiem()*
skrótów
Boty niezgodne z zasadami zostaną wykluczone z turnieju.
- Dozwolone jest tylko podstawowe Brainfuck, bez innych wariantów, które wspierają procedury lub operacje arytmetyczne
- Kod źródłowy twojego bota nie powinien zawierać niedopasowanych nawiasów
Możesz zapoznać się z podstawowymi strategiami, ale nie używaj kodu innej osoby dla własnego bota.
Punktacja
Wynik bota zależy od liczby wygranych w stosunku do wszystkich innych botów. Spotkanie między dwoma botami składa się z 10 meczów o różnych długościach taśmy pamięci, co daje maksymalny wynik 10 punktów na spotkanie. Remis nie daje punktów za ten mecz.
Program sterujący
Program sterujący możesz znaleźć na github, wraz z pełnymi dziennikami z bitew. Tabela wyników zostanie opublikowana tutaj po wygenerowaniu.
Sklonuj repozytorium i sam wypróbuj swojego bota przeciwko innym. Użyj, python Arena.py yourbot.bf otherbot.bf
aby uruchomić mecz. Możesz modyfikować warunki za pomocą flag wiersza poleceń -m
i -t
. Jeśli twój terminal nie obsługuje sekwencji ucieczki ANSI, użyj --no-color
flagi, aby wyłączyć kolorowe wyjście.
Przykładowe boty
FastClearBot.bf
(>)*9 Since the tape length is at least 10, the first 9 cells can be easily ignored
([ Find a non-zero cell
+++ Increment at first, since it could be a decoy
[-] Set the cell to zero
]> Move on to the next cell
)*21 Repeat this 21 times
DecoyBot.bf
>(+)*10 Set up a large defense in front of your flag
>(-)*10 Set up another one with different polarity
(>+>-)*3 Create some small decoys
(>[-] Move on and set the next cell to zero
. Wait one round, in case it is the enemy's flag
)*21 Repeat this 21 times
DecoyBot wygra każdy mecz z taśmą o długości większej niż dziesięć, ponieważ FastClearBot może uniknąć małych wabików, ale nie większych. Jedyną sytuacją, w której FastClearBot może wygrać z DecoyBotem, jest sytuacja, gdy jest wystarczająco szybki, aby dotrzeć do flagi wroga, zanim jego przeciwnik zgromadzi duże wabiki.
źródło
Odpowiedzi:
Nyuroki Magical Fantasy
Myślę, że najwyższy czas zacząć poważnie ~ Skończyłem mój kompilator na trochę HLL, aby ułatwić pisanie programów BF Joust. To była moja pierwsza poważna próba zrobienia czegoś z tym. Koncepcja bota jest dość prosta. Ustawia kilka wabików o różnej polaryzacji, a następnie wariuje z dużym poruszeniem z wyraźnym odwróconym przesunięciem pośrodku.
Nawiasem mówiąc, oczekiwany wynik to około 577 punktów w porównaniu ze wzgórzem ostatniej rundy. To 93% wskaźnik wygranych. <3
Opracowano | Kod źródłowy
Edycja : Wycisnąłem kilka zwycięstw z Nyuroki.
Edycja 2 : Hej, spójrz, zrobiłem to jeszcze raz!
Edycja 3 : Po dłuższej walce z głupim błędem analizy w Arena.py, w końcu dostałem kolejną poprawę w ~ To właśnie rozumiem przez „czas na poważność”, wiesz. <3
źródło
)
a*
lub między*
a a liczbą?Bot maskowania urządzenia
Ten bot w zasadzie próbuje ukryć swoją bazę, dzięki czemu inne boty przejdą tuż obok niej i zejdą z taśmy.
źródło
Burly Balder v3
Burly Balder to średnio wolny pośpiech. Robi dwa duże wabiki przed przejściem do trybu szczytu. W trybie szczytu ma pętlę, która wykorzystuje tylko 4 kroki na każdą komórkę zerową, a gdy komórka niezerowa ma analizę przypadków dla [-18,18] przed ślepym zmniejszeniem za pomocą 107 przed wyczyszczeniem za pomocą
[-.]
. Czyści niezmienioną flagę w 242 krokach, 114 więcej niż niepewny-*128
i 14 mniej niż naiwny[-]
czysty. Po wyczyszczeniu komórki kontynuuje pozostawianie śladu -2 wabików. Ma specjalny przypadek tylko dla indeksu 9, aby zaoszczędzić kilka kroków dla gier w rozmiarze 10 i opuszcza komórkę z 1 przynętą.Ciekawostki: Balder jest nordyckim bogiem i synem Odyna. Znany jest głównie z historii swojej śmierci : bał się o swoje bezpieczeństwo, więc inni bogowie próbowali przewidzieć i chronić przed każdym zagrożeniem. W końcu został zabity przez Lokiego, ponieważ podczas gdy chronili go przed mieczami i strzałami, zapomnieli go chronić przed Jemiołą.
źródło
BeatYouMate
był sprytny. Obawiam się, że wabiki większości botów będą jeszcze większe w następnej rundzie, dopóki nie zostanie ukarana. Być może pojawią się kolejne fajne strategie :)EvoBot 1
Jest to prosty bot stworzony za pomocą algorytmu genetycznego. Zacząłem od szablonu, a mój program powoli dostosowywał liczby, aby stworzyć lepszego bota-wojownika. Poniższy kod został edytowany w celu zwiększenia czytelności.
Wykorzystałem inne prace konkursowe do zmierzenia sprawności różnych kandydatów.
Ponieważ była to moja pierwsza próba evobota, zacząłem od prostego szablonu:
Przewiduję, że ten bot uzyska wynik w przedziale 50–60.
Obecnie pracuję nad szablonem odwrotnego wabika.EvoBot 2
Jest to bot utworzony przez ten sam algorytm genetyczny, ale z następującym szablonem:
Ten bot wykorzystuje strategię odwrotnego wabienia do ustawienia 4 wabików o różnej wysokości. Powstały bot to:
Spodziewam się, że ten nowy bot poradzi sobie lepiej niż poprzednie boty, prawdopodobnie zdobywając wynik w latach 70. (prawdopodobnie znacznie wyższy niż ten, ponieważ istnieje wiele nowych wpisów).
źródło
Alternator
Zakłada, że większość ludzi wyzeruje komórkę, dodając ją lub odejmując, więc średnio każda komórka zajmie 128 obrotów do zera.
Wersja z adnotacjami
źródło
Więc ktoś tutaj używa algorytmu genetycznego, aby spróbować tworzyć programy tutaj. Cóż ... dawno temu napisałem ewolucję BF Joust dla stałego skoku w kanale IRC. Postanowiłem spróbować również w tym konkursie ~
I ... w przeciwieństwie do innej osoby z ewolucją, moja ewolucja może faktycznie zmienić więcej programu niż liczbę powtórzeń. :)
NestDarwin (generacja 309)
To najlepszy wynik, jaki do tej pory wymyślił mój ewolucja. Nie jestem pewien, jak bardzo struktura zagnieżdżona pomaga w tym przypadku, ale takie konstrukcje były tym, co ewolucja ma zrobić. Oczekiwany wynik na skoczni 27.08.2014 to 474 punkty. (Obliczane przez uruchomienie bitwy na wszystkich 21 długościach taśmy i pomnożenie przez 10/21. Zauważ, że nie jest to normalizowane ze względu na fakt, że na tym wzgórzu jest jeden dodatkowy program)
EDYCJA : Zmieniono listę programów, które chcę wejść na to wzgórze. Ran ewoluował przez noc. :)
EDYCJA 2 : Poszedłem i ręcznie przeanalizowałem dane wyjściowe ewolucji. Mimo że wygląda zupełnie inaczej, NestDarwin jest w zasadzie zoptymalizowaną wersją TinyDarwin ... Ręcznie zminimalizowaną (z identyczną funkcjonalnością) i przeanalizowano:
Tak więc prawie identyczny program wyglądałby następująco ... co jest w zasadzie superoptymalizowaną wersją TinyDarwin.
TinyDarwin przedstawiał się następująco. Nie bardzo inaczej, prawda? Po prostu wyciągnę go ze wzgórza. Myślałem, że to jest wyraźne, ale ... no cóż, myliłem się.
Staje się oczywiste, że obecna skocznia nie jest wystarczająco silna, aby mogła ewoluować o wiele bardziej skomplikowane rzeczy. :(
źródło
Niedźwiedź polarny Mk II
Istnieją dwa rodzaje niedźwiedzi polarnych : te, które wpadają w pułapkę i te, które chwytają innych ludzi.
Próbuje odgadnąć polaryzację przeciwnika, a następnie wykorzystuje tę informację do zablokowania przeciwnika w nieskończonej pętli. Działa dobrze przeciwko prostym strategiom czyszczenia i nieco losowo przeciwko innym. Pułapek można dość łatwo uniknąć, więc później mogę dodać strategie tworzenia kopii zapasowych.
źródło
(]< (+)*290 (>)*9 ... [-])*2
?+
a druga używa-
.[(+)*3[-]]
,[(-)*6[+]]
) i działa świetnie (przynajmniej w przypadku dość małych przesunięć).>>>>>>>>>((-)*4[+][--.]>)*21
które podwójnie sprawdzają komórkę, a ty(+/-)*290
powodowałeś uruchomienie drugiej pętli synchronizacji. To nie wina przesunięcia.Bot pacyfisty
Mój bot wierzy, że przemoc nigdy nie jest odpowiedzią i za wszelką cenę spróbuje uniknąć walki.
źródło
Jest tam ktoś?
Okresowo spogląda za siebie, aby ustalić, kiedy wróg zaczął usuwać wabiki, a następnie pędzi naprzód.
Wydaje się, że dobrze sobie radzi, ale nie jestem pewien, czy wynika to ze strategii, czy tylko dlatego, że dodam 10 do każdej komórki przed wyczyszczeniem.
Edycja: Naprawiono problem z logiką. Pierwszy raz pisze program pieprzenia mózgu. Zasługuje na swoją nazwę.
źródło
WALL-E 2.0
Pędzi do położenia 9 i dodaje do niego 128, wygrywając szybko w arenie rozmiaru 10, jeśli przeciwnik nie zmienił początkowej wartości flagi. Na większych arenach działa to jak duża pułapka. Następnie wypełnia przestrzeń między lokalizacją 9 a własną flagą dużymi wabikami. Po umieszczeniu wabików skanuje w poszukiwaniu niepustych lokalizacji i próbuje je szybko usunąć.
Wersja 2.0 buduje większe wabiki i ma pewną tolerancję na zmianę początkowej wartości flagi. Może również przełączyć się na strategię tworzenia kopii zapasowych, jeśli zacznie wyglądać włochaty.
Skuteczność tego bota opiera się na dwóch faktach:
źródło
Lethal Loke V2.1 (with Jemioła)
Jest to oczywiście zabójczy bot i zabija nie tylko piękną, krzepką Balder a jemiołą, ale wygrywa prawie za każdym razem z innymi botami. Jest to połączony średni i szybki pośpiech. Mój test daje mi wynik 567
Skompilowany plik BFJ do bitwy , źródło generatora rakiety BFJ:
Ciekawostki : Loke (Loki) to bóg w mitologii nordyckiej, który lubi bawić się ze wszystkimi i oszukiwać ich. Jest zmiennokształtnym (na zwierzęta i ludzi) i zwykle idzie własną drogą. W opowieściach często podróżuje i pomaga innym bogom, robi małe sztuczki i porusza różne rzeczy. Oprócz zabicia Baldera spłodził Hel (boginię Piekła / Helvete), bestię Fenrir i Węża Midgardu, który rozpoczyna Ragnarok (norse armageddon).
Jak to działa
Na początku robi duży (-17) wabik, a następnie tworzy
+-
wzór aż do indeksu 7. Skanuje do przodu od do 13, pozostawiając ślad (+ 10, -32) + wabików, ale kiedy wykryje zestaw, przerwie i rozpocznij średni poziom szczytu. Jeśli nie zostaną ustawione żadne komórki, rozpocznie on także tryb powolnego * 3 szczytu.* 1 W trybie średniego szczytu wykrył aktywność przeciwnika w jednym z indeksu 7-13 i zaczyna od indeksu 2. Niektórzy przeciwnicy pozostawiają zero, a inni pozostawiają inną wartość, a teraz mają środki do wykrycia aktywności przeciwnika przed podjęciem wabików indeks 2-6 (-32, + 10) +. Jeśli komórka nie ma oczekiwanej wartości (-1, 1) lub skończył robić wszystkie wabiki, przechodzi w tryb szybkiego * 2 szczytu.
* 2 Tryb szybkiego pośpiechu, którego oczekuje, że został wykryty, więc wabiki nie będą działać. Mamy nadzieję, że te, które już ustawiliśmy, powstrzymują przeciwnika i koncentrują się na przepuszczaniu przeciwników. Zaczyna pędzi w najdalszym znanym nam punkcie na podstawie poprzedniego skanowania [9,14] lub indeksu 9, jeśli zostaliśmy stworzeni wcześniej. Ma specjalny przypadek dla pierwszego wabika, w którym po prostu dodajemy 120 i plodę 27, ponieważ nie chce on zmniejszać tej wartości poniżej zera, ponieważ jest to pułapka, ale dla każdego wabika po tym, jak poruszymy się w [-8,8], zanim zwiększymy 120 i krok po kroku 27 kroków, kontynuując przejście do następnej komórki.
Tryb powolnego szczytu został usunięty, ponieważ nie wpłynął on na wynik z bieżącej skoczni i sprawia, że mój bot jest nieco mniejszy (ale niewiele).
źródło
Geronimo
Jest nawet bardziej ofensywny niż bot BestOffense Kaine'a, ponieważ nie buduje żadnej obrony. Strategia jest następująca: inni będą starali się być sprytni, ale bycie sprytnym wymaga cykli. Przejdźmy więc do części, w której wiemy, że jest wróg i wyczyść wszystko, co znajdziemy.
Wydaje się, że wygrywa większość meczów z przykładowymi botami PO i botem Kaine'a.
źródło
SternBot
Właściwie półpoważny bot, teraz, gdy wszystko się zaczęło. Odnosząc się do symetrycznej natury niektórych z tych botów.
źródło
DoNothingBot
Nic nie robi.
EDYCJA: Wow, byłem zaskoczony, widząc, że wykonał lepszą pracę niż więcej niż co najmniej 20% wszystkich botów =) (Czy to oznacza, że używa lepszej strategii, czy ...?)
źródło
DoNothingBot
CounterPunch - edytowany
Zrównoważona kombinacja budowania silnej obrony, a następnie ataku.
Adnotacja:
Broni podobnie jak Backtracker @ Geobit , ale broni się przed szybkimi atakującymi, najpierw stawiając szybki wabik przed flagą.
Atak to zagnieżdżanie z przeciwną polaryzacją, aby szybko usunąć wabiki o niewielkich wartościach. Najgorszym scenariuszem powinna być wabik 64 (każda z biegunowości).
Edycja 1: Popraw skuteczność ataku przeciwko wabikom (miał błąd logiczny podczas przełączania polaryzacji).
Edycja 2: Testowanie wskazuje, że pauza działa nieco lepiej w najbardziej wewnętrznej pętli.
źródło
Backtracker
Odwrotna strategia wabika. Zacznij układać wabiki od przodu z tyłu, aby nikt nie przeskakiwał nad resztą, kiedy je buduję.
Jeśli plansza jest mniejsza niż około 20, nie działa to przeciwko botom z szybkim atakiem, ponieważ miniemy się, zanim zacznę wabić.
Uwaga: nie mam BF, ale to tak robi mi to, co chcę. Jeśli nie, pozwól mi teraz.
źródło
Nie można tego dotknąć
Jest to program zorientowany na obronę, który próbuje ustalić, w jaki sposób przeciwnik oczyszcza komórki, i buduje wabik o odpowiedniej wielkości.
Obecnie pracuję nad wersją, która może wygrać przeciwko obu biegunom.
źródło
ImpatientTripwire (alias YandereBot)
Próbuje być tripwiresem, aby mógł kłaść wabiki (głównie) o odpowiedniej polaryzacji, ale poddaje się, jeśli trwa zbyt długo i zakłada, że jesteś przeciwny parzystości. Ma odwrotny drut trójdrożny dla małych desek.
Aktualna wersja: 1.3 - zredagowana, by lepiej radzić sobie na mniejszych planszach, kosztem przegrywania gier z powodu przemykania się wrogów podczas sprawdzania drutów
Poprzednie wersje: 1.2.1
(Potrzebuję lepszego jasnego algorytmu: /)
źródło
([)*300
przeszłości[[[ and so on
?Lightfoot Plodder - EDYCJA
Oparty na Plodder , ten szybki behemot jest w stanie „szybko przewinąć” przez kolejne 0, aż osiągnie coś niezerowego (w tym momencie zacznie plodować zgodnie z oczekiwaniami).
Teraz ulepszone dzięki bardziej niezawodnemu algorytmowi skimmingu, który umożliwia także szybkie przewijanie małych wabików i własnych większych wabików.
Edycja # 2 : Teraz może wrócić do przeglądania, jeśli znajdzie więcej kieszeni zer.
źródło
Niechętny Rán v2
Strategia jest łatwa. Postaraj się, aby przeciwnik pomyślał, że jego flaga jest wabikiem i wyprzedza planszę i jest luźna (rodzaj drutu / wibratora). Po 10 pełnych rundach poddaje się i próbuje ustalić, czy przeciwnik znajduje się pod jej flagą, a jeśli nie, zrobi -17 wabików, dopóki nie trafi w ustaloną komórkę. Metoda czyszczenia, której używa, jest specjalnym przypadkiem dla [-12,12] i zaczyna plodować podobnie jak Loke.
Ciekawostki: Rán to bogini mitologii nordyckiej, która zabiera żeglarzy, zanim umrą na morzu.
źródło
Mickey V4
W przypadku V4 zastosowałem tę samą metodę, co V3, w stosunku do zaktualizowanych botów, ale z bardziej równoczesnymi populacjami (30, a nie 10).
Opracowany przeciwko wszystkim 60 botom , w tym
BurlyBalderV3
iLethalLoke
(ale z wyłączeniem 2botsonecup, którego nie można skompilować przez moją ścisłą implementację).Odkryłem bardzo różne boty i wskaźniki sukcesu, jeśli zacząłem od różnych losowych nasion. Postanowiłem więc podzielić te różne punkty początkowe na populacje i pozwolić im od czasu do czasu zapylić krzyżowo.
W 1400 pokoleniach 30 równolegle ewoluujących populacji stworzyło ten program:
Obliczam współczynnik wygranych tego bota na 90,0% w stosunku do obecnej uprawy. (Wygrane / przegrane / wyciągnięte długości taśm 1135/125/0).
Informacje o V3
Obliczony wskaźnik wygranych na 89,2% (wygrane / przegrane / wyciągnięte długości taśm 1124/62/74).
Informacje o V2
Program generowania ma teraz analizę, która wskazuje, która część końca programu jest nieużywana i przycina go przed wygenerowaniem z niego kolejnych generacji. Oznacza to, że losowe mutacje występują tylko w używanych częściach programu, a zatem ewolucja przebiega szybciej.
72% w stosunku do obecnej uprawy w tym czasie. (Wygrane / przegrane / wyciągnięte długości taśmy 892/204/143).
Informacje o wersji V1
31500 pokoleń, tylko 12 botów. 65% (taśmy o długości 165/80/7 wygrane / zgubione / wyciągnięte). Używam wszystkich 21 długości taśm.
Potencjalne boty są uszeregowane według:
Drobnostki
The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
źródło
Gracz
Jest to ściśle związane z moim botem Geronimo. Ale tam, gdzie Geronimo gra pewną rzecz, Hazardzista próbuje być szybszy, robiąc to, co robi najlepiej - hazard: Przechodzi do 20. komórki i zaczyna stamtąd zerować.
Oznacza to, że może łatwo stracić tylko dlatego, że arena nie jest tak duża. Ale jeśli tak, być może liczy się kilka cykli.
Ciekawostka: naprawdę zastanawiałem się nad wejściem do grupy botów, które wyglądają jak
(>)*X(>[-])*Y
gdzieX in 9..29
i gdzieY = 30 - X
. Ale myślę, że wpisanie dwudziestu botów byłoby trochę za dużo :) Lub nawet czterdzieści, gdybym miał dwie wersje, jedną z zerami[+]
i jedną, która to robi[-]
.źródło
Dumbot
Niezwykle głupi bot, który po prostu miesza się z otoczeniem i ma nadzieję, że boty, z którymi walczy, zejdą z taśmy.
(Nie jestem pewien, czy to w ogóle działa - jednak to nie błąd!)
Adnotacje (z tym, co myślę, że robi):
(Rozłożę się, jeśli wygra to pojedynczą bitwę)
źródło
CropCircleBot
Bot ten wykorzystuje zaawansowane algorytmy, które zostały przesłane przez kosmitów poprzez kręgi zbożowe, które umieścili na ziemi. Zmieni ludzkość i zapewni ogromny postęp technologiczny, a nawet rozwiąże wiele problemów środowiskowych.
źródło
BeatYouMate
A ponieważ każdy powinien opublikować bota, który pokona pierwszego bota, który opublikował, oto 5 + bot do wabienia:
źródło
CleverAndDetermined
Ustawia kilka małych pułapek, a następnie biegnie na drugą stronę i próbuje wyczyścić wszystko, powyżej lub poniżej zera. Nie działa
----
.źródło
+++
wcześniej[-]
jest naprawdę sprytny, aby uniknąć prostych pułapek!(
, czy mogę to potraktować jak komentarz?MetaJSRandomBot
Ideą tego bota jest zrobienie czegoś całkowicie losowego, co wciąż jest poprawnym kodem js bez zbytniej bezużyteczności. Napisałem następujący kod ( link JSFiddle ) do jego wygenerowania. Zobaczmy, jak dobrze sobie radzi =)
źródło
Ruletka pruska
Rosyjska ruletka postawiła zakład ze swoim przyjacielem Prusakiem, a teraz jego kolej na grę.
źródło
Większy
Rozpoczyna się wyścig zbrojeń !!
Zarówno buduje, jak i niszczy ściany o wysokości
1618 cm, większe niż większość konkurentów. Ma też trochę logiki, by pokonać szlafrok, obrońców flagi, przeciw-alternatory i boty, które przyjmują nietkniętą flagęWersja z adnotacjami
źródło
PatientBot
Częściowo poważny bot. ten bot spróbuje wygrać do limitu 100 000 cykli. pójdzie pod flagę wroga, stawiając na drodze kilka pułapek, nieco ją zmniejszy, wróci i będzie bronić flagi.
przyjmie, że wszystko większe niż 1 lub mniejsze niż -1 jest flagą, a gdy je napotka, wróci. broni się, po prostu stale zwiększając. zakłada to, że większość programów użyje [] do sprawdzenia, czy flaga zmieniła się na 0, a więc (+) * 100000 będzie znacznie szybszy
Edycja: nie można zmusić go do pracy z interpreterem BF Joust. poddaję się. może powinieneś mi powiedzieć, jak poprawić mój kod.
Edycja: teraz bot wykrywa miejsce tuż przed flagą 2, a po nieznacznym zmniejszeniu flagi wyszukuje 2. Ma to na celu anulowanie scenariusza, w którym bot znalazłby komórkę 0 inną niż komórka przed flaga.
źródło
[<]
nie jest to dobry pomysł, ponieważ powtarza cofanie się, dopóki komórka pod wskaźnikiem nie będzie równa zero , co jest albo jedną z komórek przed flagą, albo po prostu samobójstwem, jeśli wskaźnik osiągnie flagę (od flagi mam nadzieję, że nie jest zero ).