Учитывая вход 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 другими дорожными плитками, по крайней мере, n-1 из них уже считаются тупиками по этому правилу. «Границы» находятся в четырех основных направлениях, поэтому плитки, граничащие по диагонали, не учитываются.
Это правило применяется неоднократно, поскольку вновь созданные тупики сами по себе могут создавать больше тупиков . Также обратите внимание, что любая дорожная плитка, ограничивающая только одну другую дорожную плитку, считается тупиком при первом применении правила.
Вход и выход могут быть либо одной строкой (со строками, разделенными любым символом, который не является #
или .
), либо массивом / списком / и т.д. Если ваш язык поддерживает это, вы также можете использовать входные данные, где каждая строка является аргументом функции.
Вы можете предположить следующее относительно ввода:
Всегда будет хотя бы один «цикл», то есть группа
#
символов, за которыми можно следовать бесконечно. (В противном случае каждая отдельная плитка станет тупиком.)Это подразумевает, что вход всегда будет 2 × 2 или больше, так как наименьший цикл:
## ##
(Который, кстати, должен выводиться без изменений.)
Все
#
персонажи будут связаны. То есть, если бы вы выполнили заливку на любом#
из них, все они были бы затронуты.
Поскольку это код-гольф , победит самый короткий код в байтах.
Приведенный выше пример и крошечная сетка 2 × 2 могут быть использованы в качестве тестовых случаев (в этой задаче не так много краевых случаев).