Probablemente conozcas Conway's Game of Life , el famoso autómata celular inventado por el matemático John Conway. La vida es un conjunto de reglas que, juntas, le permiten simular un tablero de celdas bidimensional. Las reglas deciden qué células en el tablero viven y cuáles mueren. Con un poco de imaginación, se podría decir que la vida es un juego de cero jugadores: un juego con el objetivo de encontrar patrones con un comportamiento interesante, como el famoso planeador.
Un juego de cero jugadores ... Hasta hoy. Debes escribir un programa que juegue el Juego de la Vida, y lo juegue para ganar, al estilo King of the Hill. Tu oponente (singular), por supuesto, intenta hacer lo mismo. El ganador es el último bot con células vivas o el jugador con más células vivas después de 10000 generaciones.
Reglas del juego
Las reglas son casi las mismas que la vida normal (B3 / S23):
- Una célula viva con menos de dos vecinos amigos muere de hambre.
- Sobrevive una celda viva con dos o tres vecinos amigos.
- Una célula viva con más de tres vecinos amigos muere por sobrepoblación.
- Una celda muerta con exactamente tres vecinos del mismo jugador cobra vida para luchar por ese jugador siempre que no haya vecinos enemigos .
... pero después de cada generación, tanto tú como tu oponente tienen la oportunidad de intervenir. Puedes despertar hasta un máximo de 30 células para luchar por ti. (El servidor decide quién va primero).
El tablero es un cuadrado de celdas (x, y). Todos los cuadrados están inicialmente muertos. Las fronteras no se envuelven (este no es un mundo en forma de toro) y están permanentemente muertas.
Este es un concurso en el espíritu de Battlebots y Core Wars . Hay un servidor central que ejecutará bots y se puede encontrar aquí
Protocolo
El servidor de arena habla un protocolo JSON simple comunicado a través de argv
Donde valores es una cadena codificada JSON
y_size
: el máximo y coords de azulejos antes de que desaparezcanx_size
: el máximo x coords de fichas antes de que desaparezcantick_id
: el número de marca actualboard
: un diccionario con claves en la forma '(y, x)' y valores en la formabot_id
(int)bot_id
: las fichas en el tablero con esta identificación son tuyas
Ejemplo:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
Diciéndole al servidor su elección:
- Envíe al servidor una lista de mosaicos para cambiar a su color.
- Solo aquellos que estén vacíos serán cambiados
- Formato de lista de coordenadas anidadas
[[0,0], [0,1], [100,22]...]
NOTA: su bot no tiene que actualizar los mosaicos en absoluto: el servidor realiza la actualización por sí mismo
Normas de competencia
- Si su implementación no sigue el protocolo, se perderá el turno; El servidor asumirá que no hay cambios en el estado.
- No está permitido aprovechar deliberadamente una falla en el servidor de arena.
- Haz que tu IA decida sobre movimientos en un tiempo razonable. Envíe su próximo movimiento lo más rápido posible.
- Finalmente, por favor sea amable con el servidor. Está ahí para su disfrute.
- No seguir estas reglas puede conducir a la descalificación.
- En caso de empate, ambos jugadores tienen 1 victoria añadida a su total.
Ejecutando el controlador usted mismo
La fuente del controlador se puede encontrar aquí . Hay 2 formas de ejecutar el controlador:
- Modo de competencia (terminal)
- Configurar con
python3 get_answers.py
- Realiza una competencia all v all con cada bot enfrentándolo entre sí.
- Configurar con
- Modo de prueba (GUI)
- correr
python3 nice_gui.py
- Hacer clic
Pull Answers
- Si desea agregar su propia respuesta para probarlo antes de publicar, haga clic
File -> Add manual answer
y busque el archivo y elija el idioma en el que está escrito. - Si su idioma no está presente, hágame ping e intentaré instalarlo en el servidor en el que lo ejecutaré (¡las instrucciones de instalación y ejecución también serían buenas!)
- Elige 2 bots para enfrentarse entre sí
- Hacer clic
Run
- Mira el juego...
- correr
- Instalación
- Requiere python3
- get_answers requiere bs4 y html5lib
- el controlador requiere una forma de ejecutar archivos .sh (MinGW en Windows)
Puntuación
El bot con la mayor cantidad de victorias a partir del 12/07/2016
(12 de julio)14/07/2016
(14 de julio, no pudo resolver cómo ejecutar un bot) gana.
Puede solicitar ayuda con el controlador / gui en esta sala de chat
Esta pregunta ha estado en desarrollo desde 2014 y fue la pregunta más votada en el sandbox. Un agradecimiento especial a Wander Nauta (autor original y concepto), PPCG Chat (comentarios y ayuda) y cualquiera que haya comentado en la publicación de sandbox (más comentarios).