|
Il gioco è noto con il nome di Life o Gioco della Vita; fu introdotto dal matematico inglese J.H. Conway nel 1970, descritto e discusso da M. Gardner (1970, 1971). Il gioco è in realtà una simulazione dell’evoluzione di una colonia di individui o organismi nel loro habitat, costituito da un insieme ordinato di celle. La sopravvivenza della colonia è legata a rigidi rapporti di vicinato, simili a quelli che si instaurano in una città. La colonia è minata dalla possibile carenza di cibo, dovuta a sovraffollamento, e dalla solitudine degli individui. I rapporti di vicinato definiscono perciò le condizioni di nascita, morte e sopravvivenza di ciascun individuo della colonia in base al seguente schema:
La colonia evolve attraverso generazioni. Ad ogni generazione si analizzano, ad un ad una, tutte le celle: per le celle vuote si applicherà la condizione di nascita, per le celle occupate si verificheranno le possibilità di sopravvivenza o di morte dell’occupante. Analisi del problemaDa questo livello di comprensione superficiale è necessario passare ad una più profonda conoscenza del problema definendo:
Inoltre poiché Life è un gioco, dovrà essere possibile:
Life è anche una simulazione e perciò deve essere possibile:
ApprofondimentiSi decide, per chiarire il punto 1., di rappresentare l’habitat con una griglia limitata rettangolare, dove ogni quadratino rappresenta una cella. La presenza di un individuo è rappresentata con una cella contenente *. Per il punto 2. vicino di un organismo è un individuo che occupa una delle otto celle orizzontalmente, verticalmente e diagonalmente adiacenti alla cella dell’organismo in questione. Le celle numerate da 1 a 8 possono ospitare vicini dell’organismo (*) oppure essere vuote.
Per il punto 3. la soluzione migliore risulta la stesura di un elenco di regole:
E’ necessario stare ben attenti e non violare la regola 6. permettendo morti o nascite che modifichino il numero dei vicini per le celle che verranno studiate successivamente. Una semplice soluzione è quella di costruire una copia della griglia sulla quale rappresentare l’evolversi della colonia. Dopo aver costruito tutta la nuova generazione, la si potrà ricopiare sulla griglia originale. L’obiettivo è perciò vedere l’evoluzione della colonia attraverso l’evolversi delle generazioni. Per il punto 4. la condizione di inizio dovrà essere una possibile configurazione della colonia con celle occupate da individui oppure libere (randomizzazione iniziale). Per il punto 5. la condizione di terminazione potrà essere in prima istanza la morte della totalità della colonia, ma non è il caso di dimenticare che tale evento potrà verificarsi magari dopo ore di gioco e potrà risultare non solo noioso, ma anche estenuante attendere. In tal caso la soluzione più ovvia è anche la più corretta, il gioco terminerà comunque dopo un certo numero di mosse di generazioni. (Per il punto 5. si potrà ancora notare il problema della stabilità della colonia: alcune configurazioni in effetti possono non produrre ulteriori modificazioni nelle colonie, in tal caso che senso avrebbe continuare a giocare?) Schema del programmaA questo punto è possibile dare una prima formalizzazione della nostra attuale soluzione:
|
|