Dada una entrada de un "camino" de arte ASCII, da salida al camino con todos los callejones sin salida etiquetados.
Este es un camino:
########.....######..#..###
#......#######....#..#..#.#
#.##......#...#####..#..###
#..#####..#....#..#######.#
#......#...#####.....##...#
#..###.#...#...###...#..###
##########.#..#..##..#.##.#
..#......#.######.#..#.#.#.
..#......#.#..#.#.#..#.#.#.
..######.###..##..#########
Este es el camino con callejones sin salida etiquetados con la letra X
:
########.....######..X..###
#......#######....#..X..#.#
#.XX......X...X####..X..###
#..XXXXX..X....#..#######.#
#......X...#####.....##...#
#..###.X...#...###...#..###
##########.#..X..##..#.##.X
..X......#.#XXXXX.#..#.#.X.
..X......#.#..X.X.#..#.#.X.
..XXXXXX.###..XX..######XXX
Un callejón sin salida se define como cualquier azulejo camino que bordea n otros azulejos de carretera, al menos n-1 de las cuales se consideran extremos muertos ya por esta regla. "Bordeando" está en las cuatro direcciones cardinales, por lo que las fichas que bordean diagonalmente no cuentan.
Esta regla se aplica repetidamente, ya que los callejones sin salida recién creados pueden, por sí mismos, crear más callejones sin salida . También tenga en cuenta que cualquier mosaico de carretera que bordee solo otro mosaico de carretera se considera un callejón sin salida la primera vez que se aplica la regla.
La entrada y la salida pueden ser una sola cadena (con líneas separadas por cualquier carácter que no sea #
o .
) o una matriz / lista / etc. Si su idioma lo admite, también puede recibir información con cada línea como argumento de función.
Puede suponer lo siguiente acerca de la entrada:
Siempre habrá al menos un "bucle", es decir, un grupo de
#
caracteres que se pueden seguir infinitamente. (De lo contrario, cada mosaico se convertiría en un callejón sin salida).Esto implica que la entrada siempre será 2 × 2 o mayor, ya que el bucle más pequeño es:
## ##
(Que, dicho sea de paso, debería salir sin cambios).
Todos los
#
personajes estarán conectados. Es decir, si realizara un relleno de inundación en alguno#
, todos ellos se verían afectados.
Como se trata de code-golf , ganará el código más corto en bytes.
El ejemplo anterior y la pequeña cuadrícula de 2 × 2 se pueden usar como casos de prueba (no hay muchos casos límite para cubrir en este desafío).