I°) Et si le monde était plus complexe … ?
Dans la partie n°1, nous avons vu que que le monde dans lequel évolue la fourmi de Langton est composé de deux états (blanc et rouge dans ma vidéo).
Il est tout à fait possible d’implémenter de nouvelles règles, c’est à dire de nouveaux états où la fourmi devra choisir entre sa gauche et sa droite.
Pour cela, il faut changer deux choses par rapport au code précédemment établit : le nombre d’état, et les couleurs correspondant à chaque état. Commençons par un monde possédant 3 états : « 0 », « 1 » et « 2 ».
Dans la méthode draw() :
void draw() {
background(255);
displayGridAndColor();
for (int i = 0; i < nbrCycle; i++) {
int state = grid[x][y];
if (state == 0) {
turnRight();
grid[x][y] = 1;
} else if (state == 1) {
turnLeft();
grid[x][y] = 2;
} else if (state == 2) {
turnLeft();
grid[x][y] = 0;
}
moveForward();
}
}
Et dans la méthode displayGridAndColor() :
void displayGridAndColor() {
stroke(0);
strokeWeight(1);
beginShape(QUAD);
for (int i =0; i < w; i++) {
for (int j =0; j < h; j++) {
if (grid[i][j] == 0) {
fill(255);
}
if (grid[i][j] == 1) { // RED
fill(255, 0, 0);
}
if (grid[i][j] == 2) { // GREEN
fill(0, 255, 0);
}
vertex(i*rows, j*cols);
vertex(i*rows, (j+1)*cols);
vertex((i+1)*rows, (j+1)*cols);
vertex((i+1)*rows, j*cols);
}
}
endShape();
}
Nous venons d’indiquer à la fourmi qu’elle doit suivre les règles suivantes :
– Tourner à droite si l’état de la cellule est « 0 », case blanche.
– Tourner à gauche si l’état de la cellule est « 1 », case rouge.
– Tourner à gauche si l’état de la cellule est « 2 », case verte.
II°) Cas 3 états : Droite – Gauche – Gauche (DGG)
Nous obtenons le résultat suivant après quelques itérations :

Étonnamment, ces règles montre une structure compacte qui tend à s’étendre.
III°) Cas 3 états : Droite – Gauche – Droite (DGD)
Nous obtenons le résultat suivant après quelques itérations :

Ici, le résultat est chaotique.
IV°) Cas 7 états : (GDGDGDG)
Nous obtenons le résultat suivant après quelques itérations :

V°) Cas 30 états :
GDGDGDGDGDGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

Dans ce cas là, il y a une converge très rapide (< 100 d’itérations) vers un mode ordonné avec un pattern final de type « voie d’autoroute ». La figure ci-dessus est possible puisque le monde de la fourmi n’est pas plat, il est torique. La gauche est reliée à la droite, de même pour le haut et le bas. Si celui-ci était plat, nous aurions obtenu :

Fourmi de Langton – 30 états – Monde Plat
