Un automate cellulaire, pas un jeu à gagner
Le Jeu de la vie, imaginé par le mathématicien John Conway en 1970, n'a ni joueur ni score : c'est un automate cellulaire. Une grille de cellules, chacune vivante ou morte, évolue seule d'une génération à l'autre selon quatre règles minimales. Ici, je m'en sers comme d'un banc d'essai : dessinez un motif de départ, lancez la simulation, et observez ce que des règles purement locales produisent à grande échelle.
Quatre règles, appliquées partout à l'identique
On les résume par le code B3/S23. Une cellule morte entourée d'exactement trois voisines vivantes naît (Birth). Une cellule vivante entourée de deux ou trois voisines survit (Survival). Dans tous les autres cas — isolement ou surpopulation — elle meurt. Chaque cellule ne regarde que ses huit voisines immédiates ; aucune ne connaît l'état global de la grille. Les bords ne bouclent pas : une case en dehors de la grille compte simplement comme morte.
Calculer la génération suivante sans se mordre la queue
Le point délicat est là. Toutes les cellules doivent évoluer simultanément, en fonction de l'état actuel de leurs voisines. Si je modifiais la grille au fur et à mesure de son parcours, une cellule déjà mise à jour fausserait le décompte de la suivante — la vague de changements se propagerait au lieu d'être figée dans l'instant. La parade est un double buffer : je lis l'ancienne grille, j'écris chaque résultat dans une grille neuve, puis j'échange les deux. La lecture reste intacte du début à la fin du calcul.
Des motifs qui émergent de la simplicité
De ces règles triviales naissent des comportements qu'on ne devine pas en les lisant. Certaines figures sont stables (des blocs immobiles), d'autres oscillent en boucle (le clignotant), et le fameux planeur se déplace en diagonale, génération après génération, en se recopiant décalé. Rien de tout cela n'est programmé explicitement : l'émergence de ces motifs n'est que la conséquence des mêmes quatre règles répétées sur chaque case. Le compteur de génération et de population vous donne le pouls de la simulation.
Ce que ce petit automate dit de mon travail
Un système complexe et vivant peut reposer sur un cœur de règles courtes, explicites et testables. C'est exactement ce que je recherche sur vos projets : une logique métier claire, dont chaque comportement se déduit de règles simples plutôt que d'un empilement d'exceptions. Un code lisible et déterministe, où l'on comprend pourquoi le système produit tel résultat, est un code qu'on maintient, qu'on fait évoluer et dont vous restez pleinement propriétaire.