Conways Game Of Life Kata

conways-game-of-life-kata

Descripción

El Juego de la Vida de Conway es un autómata celular diseñado por el matemático John Horton Conway en 1970. Es un juego de cero jugadores, lo que significa que su evolución está determinada por su estado inicial, sin requerir más entradas. Aunque es un juego simple, puede producir patrones extremadamente complejos y es un excelente ejercicio para aprender sobre simulaciones y algoritmos.

Reglas del juego

El juego se desarrolla en una cuadrícula bidimensional de celdas, donde cada celda puede estar en uno de dos estados: viva o muerta. La evolución del juego se determina mediante las siguientes reglas:

  1. Supervivencia: Una celda viva con dos o tres vecinos vivos permanece viva en la siguiente generación.
  2. Muerte por soledad: Una celda viva con menos de dos vecinos vivos muere en la siguiente generación.
  3. Muerte por sobrepoblación: Una celda viva con más de tres vecinos vivos muere en la siguiente generación.
  4. Reproducción: Una celda muerta con exactamente tres vecinos vivos se convierte en una celda viva en la siguiente generación.

Objetivo de la kata

El objetivo de esta kata es implementar el Juego de la Vida de Conway. Debes escribir una función que tome como entrada un estado inicial de la cuadrícula y devuelva el estado de la cuadrícula después de una generación, siguiendo las reglas mencionadas anteriormente.

Instrucciones

  1. Representa la cuadrícula como una matriz (lista de listas) de valores booleanos o enteros, donde 1 (o True) indica una celda viva y 0 (o False) indica una celda muerta.
  2. Implementa una función que reciba esta matriz y aplique las reglas del Juego de la Vida para producir la siguiente generación.
  3. Asegúrate de manejar adecuadamente los bordes de la matriz. Puedes suponer que las celdas fuera de los límites de la matriz están muertas.
  4. Opcionalmente, puedes crear una visualización para observar la evolución de la cuadrícula a lo largo de varias generaciones.

Ejemplo

Supongamos que el estado inicial de la cuadrícula es el siguiente:

[
  [0, 1, 0],
  [0, 0, 1],
  [1, 1, 1]
]

Después de aplicar las reglas del Juego de la Vida, la cuadrícula evolucionará a:

[
  [0, 0, 0],
  [1, 0, 1],
  [0, 1, 1]
]
  • TypeScript

    Solución con TypeScript v1