В этом задании вам предоставляется карта двумерного ландшафта, если смотреть со стороны. К сожалению, некоторые части местности плавают в воздухе, что означает, что они рухнут. Ваша задача - предсказать, где они приземляются.
Вход
Ваш ввод - это одна или несколько строк одинаковой длины, разделенных символом новой строки, которые содержат только символы #
(знак числа, обозначающий камень) или .
(точку, обозначающую пустое пространство).
Выход
Ваш вывод имеет тот же формат, что и вход, но со следующей модификацией. Давайте рассмотрим входную строку как двумерную сетку камней. Каждая скала на входе, которая соединена с основанием сетки путем соседних скал, является твердой ; другие породы свободны . Диагонально смежные породы не считаются смежными. Все свободные камни упадут прямо вниз и окажутся в виде стека на вершине либо твердого камня, либо нижнего ряда. Рыхлые камни не прикреплены друг к другу, поэтому они падают по отдельности, а не как большие образования. На выходе получается результирующая сетка.
Примеры
Вход
..###. .##.#. .#.... .##.#.
не содержит рыхлых камней, поэтому результат идентичен.
Вход
...#.. .#..#. .#..## .#...# .##### .#...#
содержит один свободный камень наверху, который падает на твердый камень под ним. Выход
...... .#..#. .#..## .#.#.# .##### .#...#
Вход
.#####.... .#....#### ###.###..# #.#...##.. .####..#.# ......###. ..#...#..# ..#...#..#
имеет большую группу рыхлых камней слева. Группа распадается, когда камни падают, поэтому результат
.......... ....###### ..#.###..# . #...##.. .##....#.. .##...#### ####..#..# #####.#..#
Разъяснения
- Вы можете либо взять вход из STDIN и вывести в STDOUT, либо написать функцию.
- Это код-гольф, поэтому самая короткая программа (в байтах) является победителем.
- Стандартные лазейки запрещены.