Le jeu de la vie

hacker Le jeu de la vieVous n’êtes pas très motivé en ce dimanche, et ne savez trop quoi faire. Et bien ressortons ce jeu mythique qu’est Le jeu de la vie. Ce jeu inventé par John Horton Conway en 1970 est absolument à connaître, c’est un classique de la culture informatique.

Pas forcément un jeu dans le sens propre, ici pas de super-boss à terrasser pour atteindre le prochain niveau, pas de sim’s™ à nourrir, mais juste quelques règles de base très simple à comprendre, mais permettant d’avoir un environnement complexe.

Tout d’abord, si vous souhaitez l’installer, on en trouve directement dans les dépôts de votre distribution. Sous archlinux par exemple:
pacman -S gtklife
pacman -S golly

Pour avoir essayé les deux, je trouve le premier mieux fait, il en existe d’autre, notamment je n’ai pas regardé pour KDE, en Qt, mais sûrement qu’il doit y avoir des équivalents.
On remarquera que l’espace disponible pour les ‘cultures’ sont quasiment infinie, dans les deux cas cité.

Comme je disais en introduction, les règles sont très simple, on part d’une grille (quasiment infinie pour les versions cité au dessus). chaque case est appelé cellule, et peux avoir deux état, vivante ou morte. (pas de chat de Schrodinger ici :þ)

  • Si une cellule a exactement trois voisines vivantes, elle est vivante à l’étape suivante.
  • Si une cellule a exactement deux voisines vivantes, elle reste dans son état actuel à l’étape suivante.
  • Si une cellule a strictement moins de deux ou strictement plus de trois voisines vivantes, elle est morte à l’étape suivante.

règles prise sur la page wikipédia dédié au jeu.

Pas de quoi fouetter un chat (de Schrodinger) me direz vous ? Et ben si !
Si poser quelques cellules n’a rien de complexe, certaines configurations bien précise sont absolument fascinante ! Pour prendre les choses par étapes :

hacker Le jeu de la vieAprès avoir ‘jouer’ un peu au hasard, vous aurez sûrement remarquer quelques structure simple mais particulière. Une qui reviens souvent quand même, c’est ce planeur, la plus petite structure capable de se déplacer (indéfiniment). Ce planeur repris bien plus tard par la communauté des hackeurs comme symbole.
On trouve d’autre planeurs, (encore appeler vaisseaux, glisseurs…) plus complexe.

On trouve également les ‘cannons à planeur’ ce sont des structures vivant indéfiniment, mais qui génère à rythme régulier des planeurs.

On peux trouver des ‘créateur de cannons à planeurs’ généralement des structures vraiment complexe, qui va générer des cannons, tout en ce déplaçant de façon indéfini.

Il n’est pas facile de poser avec des mots la magie qu’opère ce genre de configurations, le mieux c’est encore de le voir, et c’est là qu’est l’intérêt des logiciels précédemment cité, ils proposent toute une collection de configurations de départ qui ont été découverte au fil des années, et il faut bien le dire, certaines situations sont simplement bluffante !

Deux petits exemples facile à mettre en place pour finir ce petit billet du dimanche :

  • Le cas simple à reproduire, une ligne droite de dix cellules consécutives donne un cycle de 15 périodes.
  • Le cas d’une grande ligne droite quelconque, qui ne donnera pas un cycle infini, mais c’est joli quand même :þ

Quelques structure rudimentaire remarquable.

Voilà de quoi passer une heure (si si) avec un « jeu » qui se doit d’être connu (si vous ne le connaissiez pas déjà bien sûr).

Articles en rapport:

Partager cette article:
  • Facebook
  • Twitter
  • Identi.ca
  • Google Bookmarks
  1. Tony
    fév 8th, 2010 at 17:13 | #1

    Rien de mieux que la « Conway’s Game of life » pour apprendre à programmer, simple, mais tout de même divertissant pour un étudiant.

    • Nic0
      fév 8th, 2010 at 21:09 | #2

      C’est en effet un classique pour apprendre à programmer…
      et pourquoi pas pour apprendre la méthode la Rache

Ajouter un commentaire

XHTML: Vous pouvez utiliser ces balises: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">