Prawdopodobnie znasz Conway's Game of Life , słynny automat komórkowy wymyślony przez matematyka Johna Conwaya. Życie to zbiór zasad, które razem pozwalają na symulację dwuwymiarowej planszy komórek. Reguły decydują, które komórki na planszy żyją, a które umierają. Przy odrobinie wyobraźni można powiedzieć, że Life to gra dla zero graczy: gra, której celem jest znalezienie wzorów o interesującym zachowaniu, takich jak słynny szybowiec.
Gra dla zero graczy ... Do dziś. Masz napisać program, który gra w Game of Life - i gra w nią, aby wygrać, w stylu Króla Wzgórza. Twój przeciwnik (liczba pojedyncza) oczywiście próbuje zrobić to samo. Zwycięzcą jest albo ostatni bot z dowolnymi żywymi komórkami, albo gracz z największą liczbą żywych komórek po 10000 pokoleniach.
Zasady gry
Zasady są prawie takie same jak normalne (B3 / S23) Życie:
- Żywa komórka z mniej niż dwoma przyjaznymi sąsiadami umiera z głodu.
- Żyje komórka z dwoma lub trzema przyjaznymi sąsiadami.
- Żywa komórka z więcej niż trzema przyjaznymi sąsiadami umiera z powodu przeludnienia.
- Martwa komórka z dokładnie trzema sąsiadami tego samego gracza ożywa, aby walczyć o tego gracza, pod warunkiem, że nie ma wrogich sąsiadów .
... ale po każdym pokoleniu zarówno ty, jak i twój przeciwnik macie możliwość interwencji. Możesz obudzić maksymalnie 30 komórek, aby o ciebie walczyć. (Kto jest pierwszy, decyduje serwer).
Plansza jest kwadratem komórek (x, y). Wszystkie pola są początkowo martwe. Granice nie zawijają się (nie jest to świat w kształcie torusa) i są na stałe martwe.
To jest konkurs w duchu Battlebots i Core Wars . Istnieje centralny serwer, który będzie uruchamiał boty i można go znaleźć tutaj
Protokół
Serwer areny mówi prostym protokołem JSON komunikowanym przez argv
Gdzie Wartości są łańcuchem zakodowanym w JSON
y_size
: maksymalne y współrzędnych płytek, zanim zniknąx_size
: maksymalna x współrzędnych płytek, zanim zniknątick_id
: bieżący numer tikuboard
: słownik z kluczami w postaci „(y, x)” i wartościami w postacibot_id
(int)bot_id
: płytki na planszy o tym identyfikatorze są twoje
Przykład:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
Mówienie serwerowi o swoim wyborze:
- Wyślij serwerowi listę kafelków, aby zmienić kolor.
- Tylko te, które są puste, zostaną zmienione
- Format zagnieżdżonej listy współrzędnych
[[0,0], [0,1], [100,22]...]
UWAGA: Twój bot wcale nie musi aktualizować kafelków - serwer sam dokonuje aktualizacji
Zasady konkurencji
- Jeśli twoja implementacja nie postępuje zgodnie z protokołem, jego kolej przepadnie; Serwer nie przyjmie żadnej zmiany stanu
- Nie możesz świadomie skorzystać z usterki na serwerze areny.
- Niech twoja AI decyduje o ruchach w rozsądnym czasie. Prześlij swój następny ruch tak szybko, jak to możliwe.
- Wreszcie, proszę bądź miły dla serwera. To jest dla twojej przyjemności.
- Nieprzestrzeganie tych zasad może prowadzić do dyskwalifikacji.
- W przypadku remisu obaj gracze dodają 1 wygraną do swojej sumy
Samodzielne sterowanie kontrolerem
Źródło kontrolera można znaleźć tutaj . Istnieją 2 sposoby uruchamiania kontrolera:
- Tryb zawodów (terminal)
- Skonfigurować
python3 get_answers.py
- Przeprowadź konkurencję all v all z każdym botem, który zmierzy się ze sobą.
- Skonfigurować
- Tryb testowy (GUI)
- Biegać
python3 nice_gui.py
- Kliknij
Pull Answers
- Jeśli chcesz dodać własną odpowiedź, aby wypróbować ją przed opublikowaniem, kliknij
File -> Add manual answer
i znajdź plik oraz wybierz język, w którym jest napisany. - Jeśli twój język nie jest obecny, wyślij mi ping i postaram się go zainstalować na serwerze, uruchomię go (instrukcje instalacji i uruchamiania również byłyby fajne!)
- Wybierz 2 boty, aby ze sobą konkurować
- Kliknij
Run
- Oglądaj grę...
- Biegać
- Instalacja
- Wymaga python3
- get_answers wymaga bs4 i html5lib
- kontroler wymaga sposobu uruchamiania plików .sh (MinGW w systemie Windows)
Punktacja
Bot z największą liczbą wygranych od 12/07/2016
(12 lipca)14/07/2016
(14 lipca, nie mógł wymyślić, jak uruchomić bota) wygrywa.
W tym czacie można poprosić o pomoc z kontrolerem / GUI
To pytanie jest rozwijane od 2014 r. I było najczęściej wybieranym pytaniem w piaskownicy. Specjalne podziękowania kierujemy do Wander Nauta (oryginalny autor i koncepcji), PPCG Chat (komentarze i pomoc) i każdy, kto skomentował w piaskownicy postu (więcej uwagi).