01 · Punto de partida
Tres reglas que no se acaban
En el Tema 27 la tabla B/S era un parámetro. Ahora fijamos la famosa: B3/S23. Con solo nacer con 3 y seguir con 2–3 aparecen bloques que jamás cambian, parpadeos de período 2, planeadores que viajan en diagonal y cañones que disparan naves para siempre.
Por eso la Vida es el emblema de emergencia (Tema 20): lo complejo sale de lo mínimo y hasta computa. Entenderla es entender qué puede una regla local (Tema 18) con tick parejo (Tema 16).
- ¿Con cuántas vecinas nace una muerta?
- ¿Con cuántas sigue una viva?
- ¿Qué formas persisten, oscilan o viajan?
- ¿Qué pasa si cambio un número de la tabla?
02 · Definición
Nacer, seguir y morir
Toda la Vida cabe en tres renglones sobre vecindad Moore con toroide y tick síncrono:
Nacer
Muerta con exactamente 3 vivas revive: la fertilidad justa. Con 2 no alcanza, con 4 sobra.
Seguir
Viva con 2–3 sigue: compañía sin multitud. El equilibrio estrecho que sostiene formas.
Morir
Resto muere o sigue muerto: soledad con 0–1 y multitud con 4–8 matan. El freno que poda.
| Forma | Qué hace | Por qué persiste |
|---|---|---|
| Bloque 2×2 | quieta para siempre | cada viva ve 3 y sigue |
| Parpadeo de 3 | oscila período 2 | vertical ↔ horizontal |
| Planeador de 5 | viaja en diagonal | nace adelante, muere atrás |
| Sopa aleatoria | hierve y se ralea | multitud mata más de lo que nace |
03 · Formas
Sopa que hierve frente a semilla que persiste
El azar produce chispas que mueren; el diseño produce máquinas que vuelven. La tabla trata distinto a cada una.
Sopa aleatoria
Caos que se ralea
Densidad inicial d con toroide: hierve y cae a ~3 %. Sobreviven bloques y parpadeos entre cenizas.
Semilla diseñada
Máquina que vuelve
5 celdas en forma de planeador: avanza 1 en diagonal cada 4 ticks. El diseño viaja, el azar no.
- Vida estable
- Forma que no cambia: bloque, colmena. Cada viva tiene 2–3 y cada muerta lindera evita el 3.
- Oscilador
- Forma periódica: parpadeo período 2, sapo, faro. Nace y muere en loop parejo.
- Nave
- Forma que se desplaza: planeador en diagonal. Ninguna celda viaja: la forma viaja.
- Sopa y cenizas
- Aleatoria inicial y lo que queda tras hervir. Medir vivas y cambios separa una de otra.
04 · Ciclo
La generación B3/S23
Cada tick cuenta Moore en toroide y vuelca parejo, en este orden:
- 1Sembrar.
Sopa con densidad o semilla exacta (bloque, parpadeo, planeador) en toroide.
- 2Contar y aplicar.
Muerta con 3 nace; viva con 2–3 sigue; resto muere. Todo en buffer nuevo.
- 3Volcar y catalogar.
Reemplazar y medir vivas y cambios: fija, oscilador, nave o sopa.
05 · Representación en Python
Un paso B3/S23 con toroide
El toroide envuelve con módulo: salir por derecha es entrar por izquierda. El buffer separa leer de escribir.
Python en tu navegador. Sembrá el parpadeo y comprobá que vuelve cada 2 ticks.
def paso_vida(g):
H, W = len(g), len(g[0])
n = [[g[r][c] for c in range(W)] for r in range(H)]
for f in range(H):
for c in range(W):
v = sum(g[(f+df) % H][(c+dc) % W]
for df in [-1,0,1] for dc in [-1,0,1] if df or dc)
n[f][c] = (v == 3) if not g[f][c] else (v in (2, 3))
return n
g = [[0]*5 for _ in range(5)]
for c in [1,2,3]: g[2][c] = 1
g2 = paso_vida(g)
print(sum(map(sum, g2)))
La barra de 3 sigue con 3 vivas pero acostada: el parpadeo conserva conteo y cambia forma.
Sembrar el planeador
Cinco celdas exactas que en 4 ticks avanzan un paso en diagonal.
g = [[0]*6 for _ in range(6)]
for f, c in [(1,2),(2,3),(3,1),(3,2),(3,3)]:
g[f][c] = 1
for _ in range(4):
g = paso_vida(g)
print(sum(map(sum, g)))
06 · Exploración
Laboratorio: semillas que vuelven, sopas que se apagan
Rejilla toroidal 30 × 18 con tick parejo B3/S23. Elegí semilla: sopa aleatoria con densidad, bloque quieto, parpadeo período 2 o planeador viajero. Las métricas separan fija de oscilante y sopa de nave.
B3 nace, 2–3 sigue
muerta+3 nace · viva+2–3 sigue
El bloque queda fijo y el parpadeo vuelve cada 2.
Amarilla viva y oscura muerta en toroide. La densidad solo vale para sopa; las semillas se siembran al centro. Pulsá Nueva réplica para otra sopa.
Preguntas para explorar
- Con bloque y 80 rondas, ¿cuántos cambios hay? ¿Por qué la forma fija es el cero de la Vida?
- Con parpadeo y rondas par contra impar, ¿cuántas vivas hay? ¿Qué delata al período 2?
- Con sopa repetida 3 veces, ¿el final es idéntico? ¿Qué parte es B3/S23 y qué parte es sopa?
Ver respuestas sugeridas
- Cero: cada viva ve 3 y sigue, cada muerta evita el 3. Fija es equilibrio exacto de la tabla.
- Siempre 3 vivas: la forma rota pero el conteo vuelve. Período 2 es misma cuenta cada 2 ticks.
- No: cada sopa hierve distinto. La tabla es fija; la disposición inicial arma cenizas distintas.
07 · Comprensión
Confusiones frecuentes
«Nace con 2 o 3»
Nace solo con 3; con 2 solo sigue la que ya vive. Confundir B con S crea otro autómata.
«El planeador se mueve»
Ninguna celda se mueve: mueren atrás y nacen adelante. La forma viaja, las celdas mutan.
«Más densidad da más vida»
Más densidad da más multitud que mata: la sopa densa se apaga más. Vida premia el medio, no el lleno.
«Vale en async»
El parpadeo y el planeador exigen vuelco parejo. En async se deforman: Vida es síncrona o es otra cosa.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: tabla en una línea
Ejecutá y verificá nacer, seguir y morir. Luego cambiá B a {2} y observá otro universo.
def vida(viva, n):
return (n == 3) if not viva else (n in (2, 3))
print(vida(False, 3), vida(True, 2), vida(True, 4), vida(False, 2))
Ver solución razonada
Da True, True, False, False: nace con 3, sigue con 2, muere con 4 y con 2 no nace. Cada número tiene rol.
Ejercicio 2: predecir el bloque
Sin ejecutar primero: bloque 2×2 aislado. ¿Cuántas vivas tras 1 tick? Comprobalo después.
print(4)
Ver solución
Quedan 4: cada viva del bloque ve exactamente 3 y sigue, ninguna muerta lindera llega a 3. Fija perfecta.
Ejercicio 3: soledad que mata
Celda viva sola con 0 vecinas y muerta con 3. ¿Quién vive tras el tick?
Ver una posible respuesta
print(vida(True, 0), vida(False, 3))
Da False, True: la sola muere y la muerta fértil nace. Soledad y fertilidad en una línea.
09 · Síntesis
Ideas para recordar
- Vida es B3/S23 en Moore con toroide y tick parejo: 3 nace, 2–3 sigue.
- Bloque fija, parpadeo oscila período 2, planeador viaja en 4 ticks.
- Sopa hierve y se ralea: la multitud mata más de lo que nace.
- Semilla exacta con coordenadas: un pixel decide nave o ceniza.
- En Python, toroide con módulo, buffer nuevo y tabla por pertenencia.
En el próximo tema estudiaremos los modelos de segregación: preferencias leves que crean barrios divididos.