Que estas viendo
Un automata celular elemental es un mundo 1D: una fila de celdas binarias donde cada celda solo puede estar apagada 0 o encendida 1. El canvas lo dibuja como una historia 2D: la primera fila es la semilla inicial y cada fila nueva es una generacion posterior. Por eso un sistema que vive en una linea termina formando triangulos, bandas, ruido o estructuras que parecen moverse.
Con una semilla de una sola celda, cada regla muestra su "firma" con mucha claridad. Con una semilla aleatoria puedes observar si la regla tiende al orden, al caos o a zonas intermedias.
Regla local
Cada nueva celda se calcula mirando solo tres valores de la generacion anterior: izquierda, centro y derecha.
s(t + 1, x) = f(s(t, x - 1), s(t, x), s(t, x + 1))
f: {0,1}^3 -> {0,1}
Como hay tres celdas binarias, existen ocho vecindades posibles:
111 110 101 100 011 010 001 000
Una regla decide si cada una de esas vecindades produce 0 o 1. Esas ocho respuestas forman un numero binario. Por eso existen exactamente 2^8 = 256 reglas elementales.
Como se lee el numero de regla
La regla 30 se escribe como 00011110 en binario. Leida de 111 a 000, significa:
111 -> 0
110 -> 0
101 -> 0
100 -> 1
011 -> 1
010 -> 1
001 -> 1
000 -> 0
Tambien puede verse como una suma de bits:
N = Σ f(pattern_k) * 2^k, k = 0..7
Cambiar un bit de la regla no es un ajuste cosmetico: cambia una transicion local, y esa diferencia se amplifica generacion tras generacion.
Clases de Wolfram
Stephen Wolfram propuso una clasificacion empirica para entender el comportamiento global de estas reglas:
- Clase I: el sistema converge a un estado uniforme. Ejemplos: regla 0 y regla 255.
- Clase II: aparecen patrones estables o periodicos. Ejemplos: regla 4, regla 108.
- Clase III: comportamiento caotico y aperiodico. Ejemplos: regla 30, regla 45.
- Clase IV: mezcla orden y caos con estructuras localizadas que interactuan. Ejemplo: regla 110.
La clasificacion no se obtiene mirando una sola fila; se entiende observando la evolucion completa.
Reglas notables
- Regla 30: produce caos aparente desde una semilla simple. Wolfram la uso como generador pseudoaleatorio en Mathematica durante anos.
- Regla 90: genera el triangulo de Sierpinski. Puede interpretarse como un XOR entre los vecinos izquierdo y derecho.
- Regla 110: es Turing-completa. Matthew Cook demostro que puede simular computacion universal mediante estructuras localizadas.
- Regla 184: modela trafico unidireccional. Las celdas vivas se comportan como particulas que avanzan cuando hay espacio.
Fronteras, simetria y semillas
El modo Wrap convierte la fila en un anillo: el borde izquierdo mira al borde derecho como vecino. Sin wrap, los bordes se tratan como celdas apagadas. Esta diferencia puede cambiar mucho el comportamiento en mundos pequenos.
Cada regla tiene relaciones de simetria: reflejar izquierda/derecha o complementar 0/1 produce reglas equivalentes bajo otra lectura visual. Por eso las 256 reglas se agrupan en menos familias de comportamiento.
La semilla tambien importa. Una celda central sirve para ver la estructura matematica limpia; una semilla aleatoria sirve para estudiar estabilidad, densidad y sensibilidad a condiciones iniciales.
Stack tecnico
El runtime precomputa la regla como una tabla de 8 valores y usa dos buffers Uint8Array: uno para la fila actual y otro para la siguiente. Cada paso cuesta O(W), donde W es el ancho de la fila.
index = (left << 2) | (center << 1) | right
next[x] = ruleTable[index]
El canvas no simula una grilla 2D completa. Solo calcula una fila nueva por generacion y conserva una historia visible de filas para mostrar la evolucion como textura.