Dada a entrada de uma "estrada" de arte ASCII, produza a estrada com todos os becos sem saída rotulados.
Esta é uma estrada:
########.....######..#..###
#......#######....#..#..#.#
#.##......#...#####..#..###
#..#####..#....#..#######.#
#......#...#####.....##...#
#..###.#...#...###...#..###
##########.#..#..##..#.##.#
..#......#.######.#..#.#.#.
..#......#.#..#.#.#..#.#.#.
..######.###..##..#########
Esta é a estrada com becos sem saída rotulados com a letra X
:
########.....######..X..###
#......#######....#..X..#.#
#.XX......X...X####..X..###
#..XXXXX..X....#..#######.#
#......X...#####.....##...#
#..###.X...#...###...#..###
##########.#..X..##..#.##.X
..X......#.#XXXXX.#..#.#.X.
..X......#.#..X.X.#..#.#.X.
..XXXXXX.###..XX..######XXX
Um beco sem saída é definido como qualquer ladrilho de estrada que faz fronteira com n outros ladrilhos de estrada, pelo menos n-1 dos quais são considerados becos sem saída já por esta regra. "Limite" está nas quatro direções cardinais, portanto, os ladrilhos na diagonal não contam.
Essa regra é aplicada repetidamente, pois os becos sem saída recém-criados podem, eles próprios, criar mais becos sem saída . Observe também que qualquer ladrilho de estrada que limita apenas um outro ladrilho de estrada é considerado um beco sem saída na primeira vez que a regra é aplicada.
Entrada e saída podem ser uma única sequência (com linhas separadas por qualquer caractere que não seja #
ou .
) ou uma matriz / lista / etc. Se o seu idioma suportar, você também poderá receber entradas, sendo cada linha um argumento de função.
Você pode assumir o seguinte sobre a entrada:
Sempre haverá pelo menos um "loop" - ou seja, um grupo de
#
caracteres que podem ser seguidos infinitamente. (Caso contrário, cada bloco se tornaria um beco sem saída.)Isso implica que a entrada sempre será 2 × 2 ou maior, pois o menor loop é:
## ##
(Que, aliás, deve ser produzido sem alterações.)
Todos os
#
caracteres serão conectados. Ou seja, se você realizasse um preenchimento de uma inundação#
, todas elas seriam afetadas.
Como esse é o código-golfe , o código mais curto em bytes será vencedor.
O exemplo acima e a pequena grade 2 × 2 podem ser usadas como casos de teste (não há muitos casos extremos a serem abordados neste desafio).