Probabilmente conosci Conway's Game of Life , il famoso automa cellulare inventato dal matematico John Conway. La vita è un insieme di regole che, insieme, ti consentono di simulare un pannello di celle bidimensionale. Le regole decidono quali celle sul tabellone vivono e quali muoiono. Con un po 'di immaginazione, potresti dire che la vita è un gioco a zero giocatori: un gioco con l'obiettivo di trovare schemi con comportamenti interessanti, come il famoso aliante.
Un gioco a giocatore zero ... Fino ad oggi. Devi scrivere un programma che riproduca il Gioco della vita - e lo giochi per vincere, in stile King of the Hill. Il tuo avversario (singolare) ovviamente cerca di fare lo stesso. Il vincitore è l'ultimo bot con qualsiasi cellula viva o il giocatore con il maggior numero di cellule vive dopo 10000 generazioni.
Regole del gioco
Le regole sono quasi le stesse del normale (B3 / S23) Vita:
- Una cellula viva con meno di due vicini amichevoli muore di fame.
- Sopravvive una cellula viva con due o tre vicini amici.
- Una cellula viva con più di tre vicini amichevoli muore per sovrappopolazione.
- Una cellula morta con esattamente tre vicini dello stesso giocatore prende vita per combattere per quel giocatore purché non ci siano vicini nemici .
... ma dopo ogni generazione, sia tu che il tuo avversario avete l'opportunità di intervenire. Puoi svegliarti fino a un massimo di 30 celle per combattere per te. (Chi inizia per primo è deciso dal server.)
La scheda è un quadrato di celle (x, y). Tutti i quadrati sono inizialmente morti. I bordi non si avvolgono (questo non è un mondo a forma di toro) e sono permanentemente morti.
Questa è una gara nello spirito di Battlebots e Core Wars . C'è un server centrale che eseguirà i robot e può essere trovato qui
Protocollo
Il server arena parla un semplice protocollo JSON comunicato tramite argv
Dove Valori è una stringa codificata JSON
y_size
: il massimo y corde di tessere prima che scompaianox_size
: il massimo x corde di tessere prima che scompaianotick_id
: il numero attuale di tickboard
: un dizionario con chiavi nel formato '(y, x)' e valori nel modulobot_id
(int)bot_id
: le tessere nel tabellone con questo ID sono tue
Esempio:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
Dire al server la tua scelta:
- Invia al server un elenco di tessere per passare al tuo colore.
- Solo quelli vuoti verranno cambiati
- Formato dell'elenco dei coordini nidificati
[[0,0], [0,1], [100,22]...]
NOTA: il bot non deve affatto aggiornare i riquadri: il server esegue l'aggiornamento stesso
Regole di concorrenza
- Se l'implementazione non riesce a seguire il protocollo, il turno che lo farà verrà perso; Il server non assumerà alcun cambiamento di stato
- Non è consentito sfruttare intenzionalmente un errore nel server arena.
- Chiedi alla tua IA di decidere le mosse in un tempo ragionevole. Invia la tua prossima mossa il più velocemente ragionevolmente possibile.
- Infine, per favore sii gentile con il server. È lì per il tuo divertimento.
- Non seguire queste regole può portare alla squalifica.
- In caso di pareggio, entrambi i giocatori hanno 1 vittoria aggiunta al loro totale
Esegui il controller da solo
La fonte per il controller può essere trovata qui . Esistono 2 modi per eseguire il controller:
- Modalità competizione (terminale)
- Installa con
python3 get_answers.py
- Esegui una competizione a tutto tondo con ogni bot confrontandolo.
- Installa con
- Modalità test (GUI)
- Correre
python3 nice_gui.py
- Clic
Pull Answers
- Se vuoi aggiungere la tua risposta per provarla prima di pubblicare, fai clic
File -> Add manual answer
e trova il file e scegli la lingua in cui è scritto. - Se la tua lingua non è presente eseguimi il ping e proverò a installarlo sul server su cui eseguirò (anche le istruzioni di installazione e esecuzione andrebbero bene!)
- Scegli 2 robot da mettere l'uno contro l'altro
- Clic
Run
- Guarda il gioco ...
- Correre
- Installazione
- Richiede python3
- get_answers richiede bs4 e html5lib
- controller richiede un modo per eseguire i file .sh (MinGW su Windows)
punteggio
Il bot con il maggior numero di vittorie a partire dal 12/07/2016
(12 luglio)14/07/2016
(14 luglio, non è riuscito a capire come far funzionare un bot) vince.
In questa chat room è possibile richiedere assistenza con controller / gui
Questa domanda è in fase di sviluppo dal 2014 ed è stata la domanda più votata nella sandbox. Un ringraziamento speciale va a Wander Nauta (autore originale e concept), PPCG Chat (commenti e aiuto) e a chiunque abbia commentato nel post sandbox (altri commenti).