Life

Il vostro browser deve supportare java. L'applet si trova in fondo alla pagina... buon divertimento

Cos'è "Life"?

Life è un gioco, un algoritmo, per vedere come un certo insieme di popolazioni si evolve nel tempo a seconda di ciò che ha intorno: se per esempio è sola possiamo immaginare che prima o poi si estinguerà. E' un classico esercizio di programmazione che viene implementato seguendo le regole originali, oppure con alcune varianti. Le regole originali sono le seguenti, da applicare ad una matrice casella per casella, contando i vicini nelle otto caselle adiacenti:

Si può provare "sperimentalmente" che se la matrice non è finita allora esiste almeno una configurazione per cui si avrà una espansione infinita (contrariamente a quanto creduto inizialmente). E' comunque possibile incontrare configurazioni perfettamente stabili, come un quadrato di lato 2; o periodicamente stabili come una linea di 3 elementi che cambia continuamente da orizzontale a verticale.

La mia versione

Seguendo un'idea di alcuni miei amici ho modificato sostanzialemente le regole seguenti: in particolare le caselle non rappresentano più popolazioni, ma individui singoli. Quindi le caselle delle matrici hanno sempre gli stati "pieno" e "vuoto", ma quello "pieno" si suddivide in quattro stati differenti:

  1. "Uomini" indicati nell'applet da pallini azzurri
  2. "Donne" indicati da pallini rossi
  3. "Bambini" indicati da pallini bianchi
  4. "Vecchi" indicati da pallini neri

Oltre alle regole di sopravvivenza, nascita, morte dovremo anche dare delle regole per passare, quando ragionevole, da uno stato all'altro.

Logica con cui ho costruito le regole

Il ciclo di vita è "Bambino"->"Uomo"/"Donna"->"Vecchio". Un bambino per nascere ha bisogno di un "uomo" e di una "donna", poi ho pensato che è sufficiente un numero uguale di uomini e donne (alcuni potrebbero ritenere che sia necessario un solo "uomo" ed un qualunque numero di "donne", ma allora, oggi, potrebbe essere anche sufficiente solo una "donna"... dunque ho preferito evitare complicazioni). Inoltre, vista l'attuale tendenza nelle nascite, ho pensato bene di inibire una nascita se c'è già un bambino nelle vicinanze.

Un bambino difficilmente muore bambino: infatti perché sopravviva è sufficiente che ci sia un vicino adulto (uomo, donna, vecchio) che si prende cura di lui e solo di lui, almeno approssimativamente, altrimenti ovviamente morirà per abbandono.

Un uomo/donna tendenzialmente resterà tale fino a che avrà attorno un numero accettabile di donne/uomini disponibili, senza naturalmente che questo sia un numero troppo alto. . . Invece diventerà "vecchio" quando viene a mancare la precedente condizione, ma tuttavia ha intorno un "bambino" oppure un "vecchio" ed il numero di "uomini" e "donne" è ancora abbastanza piccolo. Se non si verifica nemmeno questa l'individuo non ha alcun motivo per vivere e muore "non vecchio".
Volendo inoltre rappresentare il fatto che le "donne" vivono più a lungo e sono maggiormente legate alla famiglia ho inserito la deroga per cui una "donna", invece di morire subito, "invecchia" se ha intorno un "bambino" o un "vecchio" ed è l'unica "donna" presente.

Un vecchio vive o 1 o 2 epoche. Alla prima epoca può morire subito oppure se intorno c'è un "bambino" oppure un adeguato, ma non altro numero di "non vecchi" sopravvivere un turno in più: si vuole schematizzare il senso di inutilità che una persona anziana puo' avvertire se lasciato solo, senza neanche "nipoti".

Da una statistica si rileva che: quasi tutti i bambini diventano uomini/donne tranne pochissimi; 2/3 delle morti si concentrano nell'età "uomini"/"donne" ed un terzo tra i "vecchi".

Di seguito riporto le regole precise.

Per gli "Uomini"

Rimangono "uomini" se intorno hanno:
almeno una "donna",
non più di due "uomini",
il numero di "donne", tolto il numero di "uomini" non supera due.

Se non vale la precedente allora diventano "vecchi" se intorno hanno:
almeno un "vecchio" o un "bambino" ed il numero di "donne" e "uomini" non supera 4.

Se non vale neanche la precedente "muoiono non vecchi"

Per le "Donne"

Rimangono "donne" se intorno hanno:
almeno un "uomo",
non più di due "donne",
il numero di "uomini", tolto il numero di "donne" non supera due.

Se non vale la precedente allora diventano vecchi se intorno hanno:
almeno un "vecchio" o un "bambino" ed inoltre non ci sono donne oppure il numero di "donne" e "uomini" non supera 4.

Se non vale neanche la precedente "muoiono non vecchi".

Per i "Bambini"

Diventano con eguale probabilità "Uomini" o "Donne" se intorno hanno:
almeno un "uomo" o almeno una "donna" o almeno un "vecchio" e il numero di bambini intorno è strettamente minore del numero di "uomini", "donne" e "vecchi".

Se non vale la precedente "muoiono bambini"

Per i "Vecchi"

Sopravvivono per un'ulteriore epoca se intorno hanno:
almeno un bambino oppure la somma di uomini e donne è almeno due e non superiore a quattro.

Altrimenti muoiono subito.

Se non muoiono subito muoiono comunque al turno successivo, indipendentemente dalle circostanze.

Per le caselle vuote

Nasce un "bambino" se una casella vuota intorno ha:
nessun bambino ed un numero uguale di uomini e donne.

Premete sul pulsante per aprire l'applet e ripremetelo per chiuderlo.

Se volete scrivermi una vostra opinione sarò felicissimo!