ANABAENA CATENULA

Anabaena est un genre de cyanobactéries filamenteuses (anciennement appelées algues bleues), que l'on trouve dans le plancton. L'espèce anabaena catenula( image de gauche) croît en filaments sous forme de chaînes de cellules(image de droite). Il y a deux types de cellules : les cellules spécialisées qui ne se divisent pas et des cellules non-spécialisées qui se divisent et sont responsables de la croissance de l’algue.

Au départ nous avons une cellule non spécialisée de taille 4 symbolisée par un sens, par exemple une flèche $\leftarrow$. Elle grandit de 1 à chaque étape de son évolution.Lorsqu'elle atteint la taille 9 qui est le maximum qu'une cellule peut atteindre, elle se divise en deux cellules, une de 4, dans le sens $\leftarrow$, et une de 5 symbolisée par le sens $\rightarrow$ et l'évolution reprend.

En résumé , dès qu'une cellule arrive à la taille 9 elle se divise en deux cellules de 4 et 5. La division est gouvernée par les règles suivantes : $$ \overleftarrow{9} \longrightarrow \overleftarrow{4}\overrightarrow{5} \ \ \mbox{ et } \ \ \overrightarrow{9} \longrightarrow \overleftarrow{5}\overrightarrow{4}$$

Voici les premières étapes de la croissance :

Etape 0 : 4←

Etape 1 : 5←

Etape 2 : 6←

Etape 3 : 7←

Etape 4 : 8←

Etape 5 : 4← 5→

Etape 6 : 5← 6→

Etape 7 : 6← 7→

Etape 8 : 7← 8→

Etape 9 : 8← 5← 4→

Etape 10 : 4← 5→ 6← 5→

Le but de ce projet est de programmer une simulation de la croissance de cette algue au cours du temps.

Travail :

A faire

  • Par groupe de deux ou trois, vous devez écrire un progamme python qui affiche l'algue au bout de $n$ étapes
  • La structure de données à utiliser est la liste chaînée.
  • On pourra commencer par définir une classe Cell qui représente une cellule avec trois attributs : taille , sens et suivante.
  • On pourra améliorer cette simulation en affichant les étapes intermédiaires de la croissance.

A rendre

  • Un fichier individuel au format .pdf de 5 pages maximum contenant un rapport avec :
    • La répartition des tâches dans le groupe.
    • Les difficultés rencontrées et les solutions proposées.
    • L'explication d'une partie de code que vous aurez plus spécifiquement travaillé.