Regreso al pasado en el juego de la vida

La mente es algo bien curioso, intenta obligarla a prestar atención durante un rato largo a algo tan estimulante como el crecer de la hierba y divagará y divagará... hasta darse de morros con algo sin saber como llegó allí. Hará como un par de semanas estaba yo en esta situación y sin saber como se me ocurrió tirar de cierto código para intentar dar "marcha atrás" en el juego de la vida de Conway, algo que por lo que parece solo sería posible por fuerza bruta (quizá que sea Turing completa tenga algo que ver :P).

Y aunque queda mucho pulir aquí y allá (solo puede obligar a las celulas vivas a mantenerse vivas, el código para las demás está escrito pero no acaba de funcionar así que hay que revisarlo), creo que puede ser interesante.

Los códigos son estos:

  • bool_solve.py (tiene unas cuantas optimizaciones con respecto al anterior)
  • life.py (el estado inicial se define con la variable state, hay ejemplos a partir de la línea 43)

Por ejemplo, figura objetivo:

Triángulo de Sierpinski

Tiene estas "soluciones": coloreado_para_terminal texto plano

Si damos un paso más, por ejemplo en esta:

Llegamos a un punto donde las que estaban vivas lo estarán, las demás... depende (las que deben estar vivas están en verde):

Nota: llevó 21:30 minutos calcularlo, para 2^25 estados iniciales posibles equivaldría a probar unos 26011 cada segundo :D.

Y eso es todo lo que he conseguido por ahora, me pregunto hasta donde se podría llegar.

Peleándose con P y NP » « One liners (13): sacar un número de urandom en python