On réécrit tout pour n'avoir que des structures imutables (à part un tableau dynamique).

Il reste à prendre en compte correctement le temps de mutation.
Prise en compte du temps de mutation en supposant un comportement go or grow.
On transforme les observateurs pour ne plus avoir besoin qu'ils soient mutables et on les lance dans des threads dédiées
On limite un peu le frottement
Corrections mineures
On utilise des ~et on passe le temps explicitement plutôt que de passer par la structure Crowd
On passe directement la liste des cellules