Constellation Knowledge Network - Preguntas y respuestas sobre Bagua - Python implementa el juego de la vida basado en autómatas celulares

Python implementa el juego de la vida basado en autómatas celulares

En esta ocasión implementamos el Juego de la Vida en Python, que es un autómata celular simple. Según ciertas reglas, el programa puede extrapolar automáticamente del estado actual al siguiente. El producto final es el siguiente:

Hablemos de las reglas del juego de la vida:

En el juego de la vida, cada célula tiene dos estados, vida y muerte. En nuestra implementación, las células amarillas representan células vivas y las células rojas representan células muertas. El siguiente estado de cada celda está determinado por los estados actuales de esa celda y las ocho celdas circundantes.

Específicamente:

La célula actual es una célula viva.

La unidad actual es una unidad inactiva

Biblioteca estándar desinstalada:

Biblioteca de terceros:

Módulo de importación:

Primero que nada, debes saber que el espacio habitable de una celda es un cuadrado N * N. Cada celda tiene dos estados: ENCENDIDO y APAGADO. Encendido es 255, apagado es 0. Usamos numpy para generar una matriz cuadrada de N * N Np.random. La elección es seleccionar aleatoriamente un elemento con igual probabilidad en State.on y State.off para construir una matriz cuadrada de N * N.

En segundo lugar, debemos entender cómo contar el número de células vivas alrededor de las células, especialmente aquellas que tienen un círculo alrededor del borde. Podemos usar el método del resto, suponiendo que el tamaño del tablero es 9 * 9, luego, para los bordes izquierdo y derecho, el método de cálculo del elemento izquierdo del borde izquierdo es -1% 9 = 8, que colapsará automáticamente al borde derecho. Sume los valores de las ocho celdas que rodean la celda y divida por 255 para obtener la cantidad de células vivas que rodean la celda.

El siguiente paso es la traducción de las reglas, es decir, en base al estado de la generación actual, se deduce el estado de la siguiente generación de células. Inicial es la matriz de la generación actual y los datos son la matriz de la próxima generación. Calculamos el valor de los datos en función del valor inicial. El número total es el número de células viables circundantes. Si las células actuales están vivas y el número total es mayor que tres o menor que dos, la próxima generación morirá. Si la célula actual muere y el total es igual a tres, la próxima generación de células vivas se multiplicará por esa célula.

El siguiente paso es el proceso de realización de la animación. Las primeras líneas son las operaciones básicas del dibujo. Luego usamos el método matplotlib.animation. Entre ellos, el significado de los parámetros aceptados por Funanimation: fig es el identificador de la imagen y la función de generación es la función que necesitamos para actualizar los datos de cada cuadro de la imagen, que se introducirá. abajo. fargs son los otros parámetros de la función generar, excepto el primer parámetro. El primer parámetro se pasa a la función generar a través del framenum (número de cuadro) especificado por Funanimation. Frames es la cantidad de cuadros, intervalo es el intervalo entre la actualización de la imagen y save_count es la cantidad de valores desde los cuadros hasta el caché.

Si se especifica la ruta para guardar (html), se guardará como una animación html.

Echemos un vistazo a la función generar, donde NUM es el número de iteraciones y frame_num recibe el número de fotogramas de FuncAnimation. A través de bucles for anidados, actualizamos el estado de cada elemento en la matriz cuadrada uno por uno.

Finalmente, podemos ejecutar nuestro programa a través de los parámetros de la línea de comando:

El parámetro -size es el tamaño del tablero de ajedrez, -seed es la semilla aleatoria utilizada para generar diferentes cuadrados aleatorios .

Gosper Glider Gun

Puedes cambiar el planeador por un planeador. -Guardar como dirección de guardado de animación.

上篇: ¿Qué significa llevar a alguien solo? 下篇: Selección del terreno del desierto bioquímico en el modo Biochemical Terminator del juego móvil CF
Artículos populares