Vi ricordate i giochi Flash? Quelli che giravano nel browser prima che Adobe decidesse di uccidere tutto nel 2020? Beh, io sì. C’erano dei siti – Miniclip, Newgrounds… – che erano una specie di parco giochi digitale non curato, pagine con sfondo nero e popup ovunque, dove si potevano passare ore senza capire davvero cosa si stesse facendo. Vi lamentate del brainrot? Forse non ricordate il web anni novanta e quella ragazzina col porro che cantava la polka… Anyway, era uno di quei pomeriggi qualsiasi, non ricordo il sito esatto – uno di quei posti con URL incomprensibili tipo “geocities.com/~qualcuno/games” e una grafica che faceva male agli occhi. Mi imbattei in qualcosa di strano. Non c’era il logo Adobe Flash ancora caricato, non c’erano istruzioni, non c’era un pulsante “Play”. Solo una griglia di celle nere e bianche che cambiavano, generazione dopo generazione, apparentemente a caso.
Aspettai. Pensavo si stesse caricando.
Niente. La griglia continuava a cambiare. Cercai di cliccare sulle celle.
Niente. Provai a premere tasti sulla tastiera. Niente. Guardai per qualche
minuto, aspettando che succedesse qualcosa – un game over, un punteggio, un
obiettivo. Niente. Non era un gioco. Non c’era niente da “giocare”. Era come
guardare la pioggia cadere, ma in digitale. Centinaia e centinaia di pixel
continuavano a crearsi e distruggersi. Mi annoiai, chiusi la pagina. Anni dopo
– non ricordo quanti, tanti – mi capitò di leggere un articolo su Wikipedia. Il
titolo era “Conway’s
Game of Life“. E il click scattò.
Quello che avevo visto quel giorno non
era un gioco, o almeno non nel senso tradizionale. Era una simulazione. E quella simulazione, con quattro regole
che anche un bambino poteva capire, faceva qualcosa che nessuna di quelle
regole prevedeva esplicitamente: produceva complessità. Ordine dal caos. Strutture che emergevano, crescevano,
interagivano. Pattern che si muovevano attraverso la griglia come fossero vivi.
E poi – e qui ebbi la mia epifania – quelle strutture potevano simulare un
circuito elettronico. Qualsiasi circuito elettronico. Teoricamente, qualsiasi
calcolo che una macchina di Turing possa fare. Quattro regole, celle binarie.
In sostanza: una macchina universale di
calcolo.
Benvenuti nella storia di come il
matematico inglese John Horton Conway,
cercando di costruire il giocattolo più semplice possibile, costruì
accidentalmente una delle dimostrazioni più potenti di come la complessità
possa emergere dal nulla. Cari creazionisti, sì questo è anche per voi.
Von Neumann aveva una
domanda
Prima di Conway, c’era Von
Neumann. John von Neumann – Bond,
James… ok la smetto… – già negli anni ’40 si interrogava su una
questione che suona quasi filosofica: può una macchina costruire una copia di
se stessa? Non era una domanda astratta. Von Neumann aveva già dimostrato,
teoricamente, che era possibile. Il suo modello – un “automa cellulare”
bidimensionale – dimostrava il principio. Funzionava così: una configurazione
di celle su una griglia contiene al suo interno le “istruzioni” (codificate
come disposizione di celle attive e inattive) per replicarsi. La struttura
legge queste istruzioni, manipola le celle circostanti, e genera una copia
identica di se stessa in un’altra zona della griglia. La copia contiene le
stesse istruzioni, quindi può ripetere il processo all’infinito. È il sogno (o
l’incubo, dipende dai punti di vista) di ogni ingegnere: una macchina che si
riproduce senza intervento esterno.
Il problema era la complessità mostruosa
del sistema. Il modello di Von Neumann richiedeva 29 stati diversi per ogni
cella (ventinove…) e un insieme di regole che riempiva pagine e pagine di
algebra. Era funzionante, dimostrabilmente corretto, ma era un mostro. Nessuno
poteva davvero capirlo a colpo d’occhio, tantomeno implementarlo e studiarlo in
pratica. Era come avere la ricetta perfetta per un piatto, ma con 300
ingredienti rari e 50 passaggi che richiedono strumenti da laboratorio.
Nel 1962, il matematico inglese John Horton Conway – professore a Cambridge, specializzato in teoria dei gruppi e altre
cose che suonano complicate – decise di fare una cosa apparentemente semplice.
Cercò la versione più minimale possibile dell’idea di Von Neumann. Un sistema di
regole che fosse abbastanza povero da essere comprensibile da chiunque, ma
abbastanza ricco da permettere comportamento complesso e, eventualmente,
autoriproduzione. Ci mise anni. Non settimane, non mesi. Anni. Dal 1962 al 1970. Otto anni di proposte, test,
fallimenti, aggiustamenti. Ogni insieme di regole veniva analizzato: troppo
ordinato? Tutto converge a configurazioni fisse e il sistema muore. Troppo
caotico? Rumore totale, niente strutture. Conway cercava un punto critico
preciso: abbastanza stabilità per permettere forme persistenti, abbastanza
instabilità per permettere comportamento imprevedibile e interessante.
Era ossessionato da questo equilibrio.
Lo testava su carta millimetrata (non c’erano ancora i computer per farlo
velocemente), con gruppi di studenti, a mano, generazione dopo generazione. Un
lavoro certosino. O da pazzi, a seconda di come la vedete.
Nel 1970 aveva trovato quello che
cercava. Lo chiamò “Game of Life” – il Gioco della
Vita. Martin Gardner, che aveva una colonna mensile sul Scientific American chiamata “Mathematical Games“, lo presentò nell’ottobre dello stesso anno. E nel giro
di settimane divenne uno degli oggetti più famosi nell’intera storia della matematica
ricreativa e dell’informatica.
Le quattro regole (e
perché ognuna conta)
Il sistema è di una semplicità
imbarazzante. Avete una griglia bidimensionale infinita (in pratica: molto
grande). Ogni cella può essere in due stati: viva (nera) o morta (bianca). Ogni
cella ha otto vicini – i quattro cardinali più i quattro diagonali. A ogni
generazione, tutte le celle aggiornano simultaneamente il proprio stato
seguendo quattro regole:
1. Una cella viva con meno di 2 vicini
vivi muore – isolamento. Non c’è abbastanza interazione per sostenere la vita. È
la solitudine che uccide.
2. Una cella viva con 2 o 3 vicini vivi
sopravvive – stabilità. La densità locale è giusta. C’è abbastanza supporto, ma
non troppa competizione. È il punto di equilibrio.
3. Una cella viva con più di 3 vicini vivi
muore – sovrappopolamento.
Troppa competizione per le risorse (è una metafora, ma funziona). Troppa folla
soffoca.
4. Una cella morta con esattamente 3
vicini vivi nasce – riproduzione. Tre celle vive creano le
condizioni per generare una nuova vita. Non 2, non 4. Esattamente 3.
Fine. Niente altro. Niente eccezioni,
niente condizioni speciali, niente “se questa cella è particolare allora…”.
Quattro regole, applicate uniformemente a ogni cella, ogni generazione, per
sempre.
Adesso fermatevi un attimo e pensate a
questa cosa: dove sta la complessità in queste regole? Dove c’è scritto che
devono emergere strutture? Dove c’è scritto che
possono esistere pattern che si muovono, che oscillano, che interagiscono in
modi non banali? Da nessuna parte. Le regole parlano
solo di celle singole e dei loro vicini immediati. Niente di più. Eppure la
complessità emerge. Emerge necessariamente, come conseguenza inevitabile di
quell’equilibrio sottile che Conway ha cercato per otto anni. Non è programmata
nelle regole. È una proprietà emergente del sistema.
Ed è questo il punto che mi ha fatto scattare il click anni dopo quella
griglia: la complessità non ha bisogno di essere progettata. Può semplicemente accadere, se le condizioni sono giuste.
La tassonomia
Nel primo anno dopo la pubblicazione sul
Scientific American, i lettori – programmatori, matematici, studenti,
appassionati – inondarono la rivista di scoperte. Era diventato un fenomeno
virale, in un’epoca in cui “virale” significava ancora fotocopie e lettere
spedite per posta. E molto rapidamente emerse una classificazione naturale
delle strutture.
Still lifes – pattern
completamente stabili che non cambiano mai. Il più semplice è il “block“: un quadrato 2×2. Nel block, ogni cella ha
esattamente 3 vicini – le altre tre celle del quadrato. Ciascuna sopravvive
perché ha esattamente 3 vicini vivi. Il pattern non cambia, non si muove. È lì,
immobile, per sempre. Altri esempi: il “beehive” (alveare),
il “loaf” (pagnotta), forme stabili che una volta formate
restano identiche.
Oscillatori – pattern che
cambiano ma tornano alla configurazione iniziale dopo un numero finito di
generazioni. Il più semplice è il “blinker“: tre celle
in fila orizzontale. Alla generazione successiva diventano tre celle in fila
verticale. Poi tornano orizzontali. Poi verticali. Periodo 2, oscillazione
infinita. Altri esempi più complessi: il “toad” (periodo 2),
il “beacon” (periodo 2), il “pulsar” (periodo 3,
uno dei più belli visivamente).
E poi c’è lui. Il glider, il mio preferito – illustrato
in dettaglio su MathWorld.
Cinque celle, disposte in una
configurazione specifica che sembra quasi un triangolino storto. E questa cosa
– questa piccola struttura da cinque celle – si muove. Non nel senso che le
celle si spostano fisicamente sulla griglia (le celle sono fisse, ricordate).
Nel senso che il pattern si propaga nello spazio, una cella alla volta,
diagonalmente verso il basso a destra (o in qualsiasi direzione, dipende
dall’orientamento iniziale). Dopo quattro generazioni, il glider è tornato alla
configurazione originale, ma spostato di una posizione in diagonale. E poi
continua. Per sempre. Attraversa la griglia all’infinito, a meno che non
incontri un ostacolo. Ed è qui che inizia a cambiare qualcosa nel modo in cui
la gente pensava al sistema. Perché un glider non è solo un pattern carino da
guardare. È un segnale. È qualcosa che
trasporta informazione da un punto A a un punto B. Ha una direzione, ha una
velocità (c/4, dove c è la velocità massima possibile nel Game of Life, che è
una cella per generazione), ha una persistenza.
E se hai un glider, la domanda
successiva è ovvia: puoi creare qualcosa che genera più glider? La risposta
arrivò nel 1970, pochi mesi dopo la pubblicazione originale. Bill Gosper – un programmatore del MIT, uno dei
primi hacker della storia – trovò il “glider gun“. Una
configurazione di 36 celle che, ad ogni 30 generazioni, sputa fuori un nuovo
glider. Un generatore periodico di segnali. Un segnale. Una sorgente periodica.
Una direzione precisa. In una griglia 2D con celle binarie e quattro regole
elementari. Ecco dove sta andando questa storia.
Il cuore: quattro
regole, una macchina di Turing
TL;DR: Il Game of Life è
Turing-complete. Significa che, in linea di principio, potete fare qualsiasi
calcolo che una macchina di Turing possa fare, dentro una griglia 2D con celle
binarie e quattro regole. Niente processore. Niente circuiti integrati. Solo
celle che nascono e muoiono secondo le quattro regole di Conway.
Per capire perché il Game of Life è
Turing-complete serve fare un passo indietro su cosa significa “Turing-complete“. Alan Turing, nel 1936 (a 24 anni, che
poi è l’età in cui io ancora giocavo a fare il wikipediano…), definì un modello
astratto di calcolo: una macchina che legge un nastro infinito di celle, scrive
su di esso, e si muove avanti o indietro, seguendo un insieme finito di regole
deterministiche. Se un sistema può simulare qualsiasi macchina di Turing –
ovvero, se potete configurarlo per eseguire qualsiasi calcolo che sia
computabile – quel sistema è Turing-complete. E questo significa, in pratica,
che è universale dal punto di vista computazionale. Non c’è niente che una
macchina di Turing possa fare che questo sistema non possa fare (dato
abbastanza spazio e tempo).
Adesso torniamo al Game of Life. Abbiamo
il glider: un segnale che si muove. Abbiamo il glider gun: una sorgente
periodica di segnali. Ma questo basta per costruire un computer? No. Per avere
un circuito logico servono le porte logiche fondamentali – AND, OR, NOT. Tutte le operazioni booleane di base. Tutto il
resto – addizione, moltiplicazione, confronti, salti condizionali, algoritmi
arbitrari – si costruisce combinando porte logiche.
Le porte logiche nel Game of Life si
implementano sfruttando le interazioni tra glider. Quando due glider si
incrociano, il risultato dipende dalla loro configurazione relativa, dal timing
preciso dell’incontro, dalla direzione di arrivo. Alcune combinazioni fanno sì
che i due glider si annichiliscano completamente (output: nessun glider). Altre
producono nuovi glider in direzioni specifiche (output: uno o più glider).
Cambiando la geometria dell’incontro – la posizione esatta dei glider gun che
li generano, il timing, le distanze – si possono costruire configurazioni che
si comportano come porte AND, OR, NOT. I glider in ingresso rappresentano i bit
di input (0 o 1, a seconda se il glider c’è o non c’è). I glider in uscita rappresentano
il risultato dell’operazione logica. Se avete porte logiche, avete circuiti
combinazionali. Se avete circuiti combinazionali e un meccanismo di memoria
(che si implementa con loop di glider e pattern oscillatori), avete circuiti
sequenziali. E se avete circuiti sequenziali arbitrari, avete una macchina di
Turing.
Non è teoria. È stato fatto. Nel
2000, Paul Rendell costruì una macchina di Turing
funzionante interamente nel Game of Life – con nastro, testina di
lettura/scrittura, stati, transizioni. Nel 2010, un gruppo di ricercatori
guidato da Paul Chapman portò il concetto
ancora oltre e costruì un computer completo con tanto di display che esegue il
Game of Life… dentro il Game of Life. Queste implementazioni sono, ovviamente,
lentissime rispetto a un processore reale. Un singolo clock cycle richiede
centinaia o migliaia di generazioni. Per fare un’addizione servono miliardi di
passi. Ma funzionano. Il calcolo avviene, corretto, deterministico,
verificabile.
Ma torniamo al punto principale. Cosa significa
tutto questo? Significa che quella griglia che stavo fissando tanti anni fa –
quella cosa che non capivo, che mi sembrava rumore organizzato – aveva più
potenza computazionale teorica di
qualsiasi processore che abbia mai usato. Non in termini di velocità (sarebbe
ridicolo) ma in termini di cosa si può fare.
La biologia che non è
biologia (ma quasi)
Conway non ha mai preteso che il Game of
Life simulasse la vita biologica in senso letterale. Le regole non hanno niente
a che fare con DNA, cellule, metabolismo, evoluzione. Non c’è selezione
naturale, non c’è adattamento. È un sistema puramente deterministico dove le
stesse condizioni iniziali producono sempre lo stesso risultato. Zero
stocasticità, zero mutazioni, zero genetica.
Eppure il campo della “vita artificiale” deve moltissimo al Game of Life.
Perché il GoL ha dimostrato sperimentalmente un principio che prima del 1970
era più intuizione filosofica che prova concreta: la complessità biologica non
necessita di un progettista intelligente. Può emergere da regole semplici,
applicate uniformemente, con niente più che interazioni locali tra elementi
identici. Auto organizzazione – strutture che emergono senza coordinamento
centrale. Competizione per lo spazio – pattern che sopravvivono sono quelli che
soddisfano le condizioni di sopravvivenza (le quattro regole). Emergenza di
strutture gerarchiche – dal glider singolo (pattern elementare) al glider gun
(generatore) ai circuiti logici (sistemi di pattern che interagiscono in modo
coordinato).
Non è evoluzione biologica nel senso
darwiniano del termine. Ma è lo stesso principio di base: dalla semplicità emerge complessità, senza bisogno che
quella complessità sia esplicitamente codificata nelle regole fondamentali.
Il rischio, qui, è sempre quello di
cadere in analogie superficiali che non reggono all’analisi. Il GoL non simula
ecosistemi reali. Le “celle” non sono cellule biologiche. Non c’è metabolismo,
non c’è riproduzione sessuale, non c’è variabilità genetica. Il parallelo va
preso per quello che è: un caso illustrativo di un principio più generale, non
una replica della vita reale. Ma resta il fatto che quando si vede un glider
gun sparare glider all’infinito, o quando si vedono pattern complessi che
emergono da configurazioni casuali iniziali, è difficile non pensare: “questo sembra vivo“. Non lo è, ovviamente. Ma il
confine tra “sembra vivo” ed “è vivo” è più sfumato di quanto ci piaccia
ammettere.
Wolfram e la ricerca
dell’universalità
Se Conway ha mostrato che dalla
semplicità emerge complessità in un caso specifico, Stephen Wolfram ha cercato di fare qualcosa di più
ambizioso: mappare sistematicamente tutto il comportamento possibile dei
sistemi cellulari semplici.
Wolfram – fisico, matematico, creatore
di Mathematica (sì, “quel” Mathematica…)
– pubblicò negli anni ’80 una serie di paper sui “cellular automata”
unidimensionali, versioni ancora più semplici del Game of Life. Immaginate non
una griglia 2D, ma una singola riga di celle. Ogni cella ha solo due vicini
(sinistra e destra) invece di otto. Ogni cella può essere 0 o 1. E il
comportamento della cella alla generazione successiva dipende solo dallo stato
suo e dei due vicini. Quante possibili regole ci sono per un sistema così? 256.
Esattamente 256, perché ci sono 8 possibili configurazioni di tre celle (2³), e
per ognuna devi decidere se la cella centrale sarà 0 o 1 nella generazione
successiva (2⁸ = 256 combinazioni totali).
Wolfram le numerò tutte – Rule 0, Rule
1, Rule 2… Rule 255 – e le testò sistematicamente, generazione dopo
generazione, partendo da configurazioni iniziali diverse. E scoprì che,
nonostante la diversità apparente, tutti questi 256 automi si raggruppavano naturalmente
in quattro categorie di comportamento:
Classe I – convergenza a
uno stato uniforme. Tutto muore o tutto diventa uguale. Ordine totale,
noiosissimo.
Classe II – comportamento
periodico semplice. Oscillatori, pattern stabili che si ripetono. Ordine
interessante, ma prevedibile.
Classe III – caos completo.
Rumore pseudo-casuale, niente strutture persistenti. Imprevedibile ma non
interessante.
Classe IV – il punto di
interesse. Comportamento complesso non periodico. Strutture che emergono,
interagiscono, producono pattern che non sono né ordinati né caotici. È la zona
tra ordine e caos dove succedono le cose interessanti.
La Classe IV è quella che conta. È il
punto critico – lo stesso equilibrio che Conway ha cercato per otto anni nel
Game of Life. E nel 2002, Matthew Cook (lavorando con Wolfram) dimostrò
formalmente che la Rule 110 – un singolo ruleset unidimensionale tra i 256
possibili – è Turing-complete.
Rule 110. Tre bit di
input, un bit di output, otto regole totali. Più semplice del Game of Life. E
universale.
Wolfram andò oltre. Nel suo controverso
libro A New Kind of Science (2002,
oltre 1200 pagine che lui stesso scrisse interamente, il che già dice qualcosa
sulla personalità), lanciò una tesi molto più grande: che l’universo stesso
potrebbe essere fondamentalmente un automa cellulare. Che la realtà fisica – il
comportamento di particelle, campi, forze, gravità – potrebbe essere il
risultato di regole semplici applicate uniformemente a una griglia discreta di
“celle” a scala sub-planckiana. È una tesi audace. La comunità scientifica l’ha
accolta con scetticismo significativo – non è facilmente falsificabile nel modo
tradizionale, richiede salti concettuali enormi, e Wolfram non ha esattamente
una reputazione di modestia (eufemismo). Ma non è stata smentita. E il fatto
che sistemi così semplici come la Rule 110 siano sufficienti a produrre
comportamento universale è una prova che il principio funziona: dalla
semplicità può emergere qualsiasi livello di complessità computazionale.
Se l’universo è davvero un automa
cellulare, allora Dio (o lo Spaghetto Volante)
è un programmatore che ha scritto regole molto semplici e poi ha premuto
“Enter” sulla tastiera. Il resto – stelle, galassie, voi che leggete questo – è
emergenza. Tutto conseguenza, niente design esplicito.
Il lascito culturale
C’è qualcosa di strano nella storia
culturale del Game of Life. Non c’è niente
da vincere, niente da perdere, niente obiettivi. Non è uno strumento – non
produce risultati praticamente utili in nessun senso. Non risolve problemi
reali. È un oggetto intellettuale puro. Un puzzle che non ha soluzione perché
non ha una domanda. Eppure milioni di persone lo hanno implementato. In ogni
linguaggio di programmazione immaginabile. Python, Java, C, Rust, JavaScript,
Haskell, Brainfuck (sì, davvero). Su ogni piattaforma. Arduino, Raspberry Pi,
FPGA, GPU con CUDA. In ogni formato. Terminale con ASCII art, interfacce
grafiche, LED fisici, schermi E-ink. Su calcolatrici programmabili. Su Game
Boy. Su microcontrollori da due euro.
È diventato il “Hello World” della simulazione. Il primo programma che
scrivi quando vuoi capire emergenza, automi cellulari, complessità. E ogni
volta che qualcuno lo reimplementa – e lo fa per puro piacere – ripete un atto
che Conway ha fatto nel 1970: prendere un’idea astratta e trasformarla in
qualcosa di concreto, di toccabile, di visibile. Io stesso, tanti anni dopo,
l’ho implementato in bash. Non c’era
nessun motivo pratico – l’ho fatto perché volevo capirlo davvero, costruirlo
con le mie mani, vedere come funzionava. E questo pattern si ripete ovunque
nella cultura hacker e open source, ergo: no,
non sono come quella particella di sodio. Se volete giocare al gioco della vita
– che detto così… – potete scaricare lo script
da qui.
Il Game of Life è stato portato su
sistemi che Conway non avrebbe mai immaginato. C’è chi lo ha implementato in
Excel con le formule. Chi lo ha fatto con circuiti elettronici reali. Chi lo ha
costruito con automi cellulari quantistici. Chi lo ha usato per generare musica
(ogni cella viva è una nota). Chi lo ha reso tridimensionale. Puro piacere di
costruire qualcosa che funziona, che fa quello che deve fare, che è elegante
nella sua semplicità. È la dimostrazione pratica che la bellezza matematica esiste.
Tornare alla griglia
Quella griglia Flash che stavo fissando
tanti anni fa è ancora nella mia memoria con una chiarezza strana, come una
sensazione di guardare qualcosa che non aveva senso. Oggi però so che aveva più
senso di quanto io avessi immaginato. Quattro regole, senza obiettivo, senza un
progettista che dicesse “ora fai questo, ora fai quello“.
E il risultato era – ed è – una delle dimostrazioni più eleganti che la
complessità non necessita di un autore. Che può emergere
dal nulla.
Von Neumann aveva chiesto: una macchina
può riprodurre se stessa? Conway aveva cercato il sistema più semplice
possibile che mostrasse un comportamento interessante. E quello che aveva
trovato, era qualcosa di molto più grande: una prova che il calcolo universale
può emergere da celle binarie e quattro regole elementari. E tutto il resto – i
glider, i gun, i circuiti logici, la Turing-completeness, la bellezza ipnotica
dei pattern che emergono – è conseguenza. Pura, inevitabile conseguenza.
E forse è questo il motivo per cui quella griglia Flash mi è rimasta impressa
per anni, anche senza capirla. Perché a un livello inconscio percepivo che lì
dentro c’era qualcosa di fondamentale. Qualcosa che parlava di come funziona
l’universo – non in senso letterale, forse, ma come metafora. Come
dimostrazione che le regole semplici, applicate con regolarità, producono tutto
quello che vediamo attorno a noi. Che la complessità del mondo – noi compresi –
potrebbe essere solo una conseguenza di regole che non sappiamo ancora leggere.
Citando un vecchio slogan pubblicitario
dell’UAAR “La cattiva notizia è che Dio non esiste. Quella
buona è che non ne hai bisogno”
Fonti e
Approfondimenti
Paper e Libri Fondamentali:
– Gardner, M. (1970). “Mathematical Games: The Fantastic Combinations of John Conway’s
New Solitaire Game ‘Life‘”. Scientific American, 223(4), 120-123.
– Von Neumann, J. (1966). Theory of Self-Reproducing Automata. University of
Illinois Press.
– Wolfram, S. (1983). “Statistical Mechanics of Cellular Automata“. Reviews of
Modern Physics, 55(3), 601-644.
– Berlekamp, E. R., Conway, J. H., & Guy, R. K. (1982). Winning Ways for Your Mathematical Plays, Volume 2: Games in
Particular. Academic Press.
Turing-completeness e Implementazioni:
– Rendell, P. (2000). “A Turing Machine in Conway’s Game of Life“.
– Chapman, P., et al. (2006). “OTCA
Metapixel – Life in Life“.
– Cook, M. (2004). “Universality in Elementary Cellular Automata“. Complex
Systems, 15(1), 1-40.
Risorse Online:
– LifeWiki: https://conwaylife.com/wiki/ (la risorsa
definitiva, catalogazione di migliaia di pattern)
– Wikipedia: https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
– Gosper’s Glider Gun: https://en.wikipedia.org/wiki/Gun_(cellular_automaton)
– Rule 110: https://en.wikipedia.org/wiki/Rule_110
– Turing completeness: https://en.wikipedia.org/wiki/Turing_completeness
Pattern Explorer:
– Online simulators: https://playgameoflife.com/
– Golly (software dedicato): http://golly.sourceforge.net/
Interviste e Materiale Biografico:
– Numberphile – John Conway interview series
Nessun commento:
Posta un commento