La coccinelle magique d'Annabelle

La petite Annabelle aime observer une coccinelle magique qui se déplace sur une grille dessinée sur une feuille de papier à grand carreaux. Cette coccinelle se déplace en suivant des règles bien précises et modifie au passage la couleur des cases de la grille.

Règles pour chaque étape du processus :
La coccinelle peut se déplacer à gauche, à droite, en haut ou en bas d'un carreau à chaque fois selon la règle suivante que l'on nomme "étape du processus" :

Si elle est sur une case rouge, elle tourne de 90° dans le sens trigonométrique (inverse horaire), change la couleur de la case en vert et avance d'une case ;
Si elle est sur une case verte, elle tourne de 90° dans le sens horaire, change la couleur de la case en rouge et avance d'une case.

 

 Cas d'une grille 5 x 5

La coccinelle démarre à partir du point G(1;2) (ligne N°1 et colonne N°2) et est orientée vers le Nord. Au départ, toutes les cases sont vertes. L'animation ci-dessous démarre à l'étape 2 du processus.


 Question :
Combien d'étapes faudra-t-il pour que la coccinelle magique d'Annabelle puisse sortir de la grille et s'envoler dans le ciel ?

 Animation pas à pas au format HTML avec curseur de déplacement.

 

 

Animation pas à pas au format vidéo MP4.

 

 

 Cas d'une grille 10 x 10

La coccinelle démarre à partir du point G(4;5) (ligne N°4 et colonne N°5) et est orientée vers le Nord. Au départ, toutes les cases sont vertes. L'animation ci-dessous démarre à l'étape 2 du processus.


 Question :
Combien d'étapes faudra-t-il pour que la coccinelle magique d'Annabelle puisse sortir de la grille et s'envoler dans le ciel ?

 Animation pas à pas au format HTML avec curseur de déplacement.

 

 

Animation pas à pas au format vidéo MP4.

 

Un exemple de début de code source en Python

Attention : il y a bien des manières de résoudre ce problème. Ceci n'est qu'un début de code comme un autre, rien de plus.

from math import*
import numpy as np
import matplotlib.pyplot as plt
"""
Dimension de la grille carrée : Dim
"""
Dim = 5 # Carré de 5 x 5 cases
Grille = np.ones((Dim,Dim)) # Que des cases blanches (des 1)
"""
Position initiale de la coccinelle : PosIni
"""
PosIni = [1,2] # position initiale
"""
Orientation = 'N' # 'N' # la coccinnelle regarde vers le NORD. Attention ! les axes sont dirigés vers le bas pour x et la droite pour y
#-----------
Pos = PosIni
#-----------