dire donc que nous avons une grille vide de 0s:algorithme pour trouver et remplir les formes fermées sur une grille
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Et vous pouvez dessiner des formes sur elle. 1 représente une cellule remplie.
1 1 1 1 0 0 0 0
1 0 0 1 0 0 0 0
1 0 0 1 0 0 0 0
1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0
0 1 1 0 0 1 1 1
1 0 0 1 0 1 0 0
0 1 1 0 0 1 0 0
Une forme est considérée comme fermée si un algorithme flot de remplissage à quatre directions ne fuir et remplir toutes les cellules en dehors de la forme. Une forme ne peut pas utiliser la limite de la grille comme l'un de ses côtés. Donc, si nous avons rempli toutes les formes fermées dans cette grille avec 2 s, nous aurions:
1 1 1 1 0 0 0 0
1 2 2 1 0 0 0 0
1 2 2 1 0 0 0 0
1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0
0 1 1 0 0 1 1 1
1 2 2 1 0 1 0 0
0 1 1 0 0 1 0 0
La mise en œuvre de l'algorithme de remplissage d'inondation est facile, mais je ne peux pas trouver un moyen de (programatically) remplir dans toutes les formes arbitraires enfermées dans une grille. Existe-t-il un type d'algorithmes ou de recherches que je pourrais utiliser pour cela?