Desafío
Se le da una representación ASCII-art de caracteres en un plano como entrada por cualquier método razonable. Esto solo contendrá:
[a-z]representando personajes movibles. Cada letra aparecerá en la pizarra como máximo una vez.#representando paredes inamovibles.representando el espacio vacío
Por ejemplo:
abcdef.gh#..
.......ij.#.
#..#.......#
...#.#...###
.#.......#q#
.........###
También se le da una cadena que representa los cambios en la gravedad. Esto solo contendrá:
>representando un cambio a la gravedad hacia la derecha<representando un cambio a la gravedad hacia la izquierda^representando un cambio a la gravedad ascendentevrepresentando un cambio a la gravedad descendente
Por ejemplo:
v>^
Su programa debe simular cada cambio de gravedad secuencialmente hasta que todos los personajes dejen de moverse (golpean una pared u otro personaje). Los personajes que "caen del borde del mapa" se eliminan permanentemente, y los personajes pueden "apilarse" uno encima del otro.
En este ejemplo, en el inicio hay gravedad hacia abajo ( v), por lo que c, e, g, h, i, y jcaen fuera de la parte inferior del mapa. Todos los demás personajes se deslizan hacia abajo hasta golpear una pared, dejando el mapa así:
.........#..
a..d......#.
#..#.f.....#
.b.#.#...###
.#.......#q#
.........###
Luego, pasamos a la gravedad hacia la derecha ( >), lo que nos deja con esto: tenga en cuenta cómo las apilas al lado de d.
.........#..
........ad#.
#..#......f#
..b#.#...###
.#.......#q#
.........###
Finalmente, simulamos la gravedad hacia arriba ( ^), durante la cual la ay la bcaída del mapa.
.........#..
.........d#.
#..#......f#
...#.#...###
.#.......#q#
.........###
Su tarea es generar los caracteres restantes después de los cambios gravitacionales. Se pueden dar en cualquier orden. Para este ejemplo, puede generar cualquier permutación de dfq.
Casos de prueba
Para el siguiente mapa:
abcde
.....
##.##
v = abde
v> = <nothing>
Para el siguiente mapa:
######
#....#
abcdef
#.gh..
######
> = <nothing>
< = gh
^> = bcde
v< = bghef