NICOLÁS BOTTARINI
Game of Life

Game of Life

Programá el famoso autómata celular de Conway usando TDD

Nivel:Básico
Duración:Media
Temas:
TDDClean CodeOOPDiseñoPatrones de diseño

Enunciado

El universo del Game of Life es una grilla bidimensional de células, cada una en uno de dos estados posibles: viva o muerta. Cada célula interactúa con sus ocho vecinas, que son las células adyacentes en horizontal, vertical o diagonal. En cada paso de tiempo ocurren las siguientes transiciones:

  1. Toda célula viva con menos de dos vecinas vivas muere, como por subpoblación.
  2. Toda célula viva con dos o tres vecinas vivas sigue viva en la generación siguiente.
  3. Toda célula viva con más de tres vecinas vivas muere, como por sobrepoblación.
  4. Toda célula muerta con exactamente tres vecinas vivas pasa a estar viva, como por reproducción.

El patrón inicial es la semilla del sistema. La primera generación se crea aplicando las reglas anteriores simultáneamente a cada célula de la semilla, viva o muerta; los nacimientos y las muertes ocurren al mismo tiempo, y el momento discreto en el que esto pasa a veces se llama tick.

Las reglas se siguen aplicando una y otra vez para crear las generaciones siguientes.

Tenés que escribir un programa que acepte una grilla arbitraria de células y devuelva una grilla similar con la generación siguiente.

Ejemplo

Generation 1:
........
....*...
...**...
........
 
Generation 2:
........
...**...
...**...
........

Soluciones

  • Kotlin de Nicolás Bottarini