Étant donné l'entrée d'une "route" de l'art ASCII, sortez la route avec toutes les impasses étiquetées.
Ceci est une route:
########.....######..#..###
#......#######....#..#..#.#
#.##......#...#####..#..###
#..#####..#....#..#######.#
#......#...#####.....##...#
#..###.#...#...###...#..###
##########.#..#..##..#.##.#
..#......#.######.#..#.#.#.
..#......#.#..#.#.#..#.#.#.
..######.###..##..#########
Voici la route avec des impasses marquées de la lettre X:
########.....######..X..###
#......#######....#..X..#.#
#.XX......X...X####..X..###
#..XXXXX..X....#..#######.#
#......X...#####.....##...#
#..###.X...#...###...#..###
##########.#..X..##..#.##.X
..X......#.#XXXXX.#..#.#.X.
..X......#.#..X.X.#..#.#.X.
..XXXXXX.###..XX..######XXX
Une impasse est définie comme toute tuile de route qui borde n autres tuiles de route, dont au moins n-1 sont déjà considérées comme des impasses par cette règle. "Border" est dans les quatre directions cardinales, donc les tuiles bordant en diagonale ne comptent pas.
Cette règle est appliquée à plusieurs reprises, car les impasses nouvellement créées peuvent, elles-mêmes, créer plus d' impasses . Notez également que toute tuile de route qui borde une seule autre tuile de route est considérée comme une impasse la première fois que la règle est appliquée.
L'entrée et la sortie peuvent être soit une chaîne unique (avec des lignes séparées par un caractère différent de #ou .), soit un tableau / liste / etc. Si votre langue le prend en charge, vous pouvez également prendre des entrées, chaque ligne étant un argument de fonction.
Vous pouvez supposer ce qui suit à propos de l'entrée:
Il y aura toujours au moins une "boucle", c'est-à-dire un groupe de
#caractères pouvant être suivis à l'infini. (Sinon, chaque tuile deviendrait une impasse.)Cela implique que l'entrée sera toujours 2 × 2 ou plus, car la plus petite boucle est:
## ##(Qui, soit dit en passant, devrait être sorti sans changement.)
Tous les
#personnages seront connectés. Autrement dit, si vous effectuiez un remplissage d'inondation sur l'un#d'entre eux, tous seraient affectés.
Puisqu'il s'agit de code-golf , le code le plus court en octets gagnera.
L'exemple ci-dessus et la minuscule grille 2 × 2 peuvent être utilisés comme cas de test (il n'y a pas beaucoup de cas de bord à couvrir dans ce défi).