Neste desafio, você recebe um mapa de um terreno bidimensional, visto de lado. Infelizmente, algumas partes do terreno estão flutuando no ar, o que significa que elas cairão. Seu trabalho é prever onde eles pousam.
A entrada
Sua entrada é uma ou mais sequências separadas por nova linha de comprimentos iguais, contendo apenas os caracteres #
(um sinal de número, significando uma rocha) ou .
(um ponto, significando espaço vazio).
A saída
Sua saída tem o mesmo formato que a entrada, mas com a seguinte modificação. Vamos ver a string de entrada como uma grade bidimensional de rochas. Toda rocha na entrada que é conectada ao fundo da grade por um caminho de rochas adjacentes é firme ; outras pedras estão soltas . Rochas diagonalmente adjacentes não são consideradas adjacentes. Todas as pedras soltas caem diretamente e terminam como uma pilha em cima de uma pedra firme ou da linha de baixo. As pedras soltas não são unidas uma à outra, então caem individualmente, não como grandes formações. A saída é a grade resultante.
Exemplos
A entrada
..###. .##.#. .#.... .##.#.
não contém pedras soltas, portanto a saída é idêntica a ela.
A entrada
...#.. .#..#. .#..## .#...# .##### .#...#
contém uma pedra solta no topo, que cai sobre a rocha firme sob ela. A saída é
...... .#..#. .#..## .#.#.# .##### .#...#
A entrada
.#####.... .#....#### ###.###..# #.#...##.. .####..#.# ......###. ..#...#..# ..#...#..#
tem um grande grupo de pedras soltas à esquerda. O grupo se decompõe quando as rochas caem, então a produção é
.......... ....###### ..#.###..# . #...##.. .##....#.. .##...#### ####..#..# #####.#..#
Esclarecimentos
- Você pode pegar a entrada de STDIN e enviar para STDOUT ou escrever uma função.
- Este é o código-golfe, então o programa mais curto (em bytes) é o vencedor.
- As brechas padrão não são permitidas.