在输入ASCII艺术字“道路”的情况下,输出标记了所有死角的道路。
这是一条路:
########.....######..#..###
#......#######....#..#..#.#
#.##......#...#####..#..###
#..#####..#....#..#######.#
#......#...#####.....##...#
#..###.#...#...###...#..###
##########.#..#..##..#.##.#
..#......#.######.#..#.#.#.
..#......#.#..#.#.#..#.#.#.
..######.###..##..#########
这是一条带有字母标记的死胡同的道路X
:
########.....######..X..###
#......#######....#..X..#.#
#.XX......X...X####..X..###
#..XXXXX..X....#..#######.#
#......X...#####.....##...#
#..###.X...#...###...#..###
##########.#..X..##..#.##.X
..X......#.#XXXXX.#..#.#.X.
..X......#.#..X.X.#..#.#.X.
..XXXXXX.###..XX..######XXX
一个死胡同被定义为任何道路瓦片边界ň其他道路砖,至少n-1个,其中被认为死角此规则了。“边界”是在四个基本方向上进行的,因此对角接壤的图块不计算在内。
重复应用此规则,因为新创建的死胡同本身可以创建更多的死胡同。另请注意,第一次仅应用该规则时,仅与另一个道路砖接壤的任何道路砖都被视为死角。
输入和输出可以是单个字符串(用非#
或字符分隔的行.
)或数组/列表/等。如果您的语言支持,您也可以接受输入,并且每一行都是一个函数参数。
您可以假设以下有关输入的内容:
总会有至少一个“循环”,
#
即可以无限跟随的一组字符。(否则,每个单独的图块都将变成死胡同。)这意味着输入将始终为2×2或更大,因为最小的循环为:
## ##
(顺便说一下,应该原样输出)。
所有
#
字符将被连接。也就是说,如果您要对any进行洪水填充#
,那么所有这些都会受到影响。
由于这是code-golf,因此以字节为单位的最短代码将获胜。
上面的示例和微小的2×2网格可用作测试用例(在此挑战中没有很多要涵盖的边缘案例)。