Propagation
Objectif : sélectionner les cases d’un tableau possédant les mêmes caractéristiques par propagation à partir une case.
Ce type d’algorithme est par exemple utilisé au sein du jeu de démineur, ou bien par les logiciel de dessin pour l’outil « baguette magique ».
Pour cet exercice, on représentera la grille par un tableau (liste de listes en Python) contenant des entiers.
Une case « sélectionnée » aura pour valeur -1
, et sera représentée par le caractère "█"
(full block) et pour plus de visibilité, une case de valeur nulle sera représentée par le caractère " "
(espace). Toutes les autres cases auront pour valeur un entier à un seul chiffre.
construire_grille
qui prend en argument les dimensions w
(largeur) et h
(hauteur) et renvoie un tableau (une liste de listes) dont toutes les cases contiennent la valeur 0
par défaut.
peupler_grille
, qui prend en argument un tableau (créé avec construire_grille
) et un entier v
donnant la valeur à placer dans la grille (v
peut signifier le code ascii d’un caractère par exemple) et un entier n
désignant le nombre d’occurrences de ce nombre à placer dans la grille. Les n
entiers v
sont placés aléatoirement dans la grille.
afficher_grille
, qui prend en argument un tableau (créé avec construire_grille
et peuplé avec peupler_grille
), qui affiche le tableau dans la console de sorte que lignes et colonnes soient correctement alignées et réparties.
propager
, qui prend en argument un tableau et un tuple depart
désignant une de ses cases (au format (ligne, colonne)
) et renvoie la liste des cases, adjacentes à la case de départ, possédant la même valeur que cette dernière. La propagation se fait exclusivement par les cotés adjacents à la case (gauche, droite, haut et bas), et non par les diagonales.
Grille
.