Desafio
Você recebe uma representação de caracteres ASCII-art em um plano como entrada por qualquer método razoável. Isso conterá apenas:
[a-z]
representando caracteres móveis. Cada letra aparecerá no quadro no máximo uma vez.#
representando paredes imóveis.
representando espaço vazio
Por exemplo:
abcdef.gh#..
.......ij.#.
#..#.......#
...#.#...###
.#.......#q#
.........###
Você também recebe uma string representando as mudanças na gravidade. Isso conterá apenas:
>
representando uma mudança na gravidade para a direita<
representando uma mudança na gravidade para a esquerda^
representando uma mudança na gravidade ascendentev
representando uma mudança na gravidade descendente
Por exemplo:
v>^
Seu programa deve simular cada alteração na gravidade sequencialmente até que todos os personagens parem de se mover (eles atingem uma parede ou outro personagem). Os caracteres que "caem da borda do mapa" são removidos permanentemente e os caracteres podem "empilhar" uns sobre os outros.
Neste exemplo, no início há gravidade para baixo ( v
), então c
, e
, g
, h
, i
, e j
cair fora da parte inferior do mapa. Todos os outros personagens deslizam para baixo até atingir uma parede, deixando o mapa assim:
.........#..
a..d......#.
#..#.f.....#
.b.#.#...###
.#.......#q#
.........###
Em seguida, passamos à gravidade para a direita ( >
), o que nos deixa com isso: Observe como as a
pilhas ao lado de d
.
.........#..
........ad#.
#..#......f#
..b#.#...###
.#.......#q#
.........###
Finalmente, simulamos a gravidade ascendente ( ^
), durante a qual o a
e o b
caem do mapa.
.........#..
.........d#.
#..#......f#
...#.#...###
.#.......#q#
.........###
Sua tarefa é produzir os caracteres restantes após as mudanças gravitacionais. Eles podem ser dados em qualquer ordem. Neste exemplo, você pode gerar qualquer permutação de dfq
.
Casos de teste
Para o seguinte mapa:
abcde
.....
##.##
v = abde
v> = <nothing>
Para o seguinte mapa:
######
#....#
abcdef
#.gh..
######
> = <nothing>
< = gh
^> = bcde
v< = bghef