Вызов
Вам предоставляется представление символов ASCII на плоскости в качестве ввода любым разумным способом. Это будет содержать только:
[a-z]представляющие подвижные персонажи. Каждая буква появится на доске не более одного раза.#представляющие неподвижные стены.представляет пустое пространство
Например:
abcdef.gh#..
.......ij.#.
#..#.......#
...#.#...###
.#.......#q#
.........###
Вам также дают строку, представляющую изменения в гравитации. Это будет содержать только:
>представляет изменение в правой гравитации<представляющий изменение в левой гравитации^представляет изменение в сторону увеличения силы тяжестиvпредставляющий изменение в нисходящей гравитации
Например:
v>^
Ваша программа должна симулировать каждое изменение гравитации последовательно, пока все персонажи не перестанут двигаться (они ударяются о стену или другого персонажа). Символы, которые «падают с края карты», навсегда удаляются, и персонажи могут «укладываться» друг на друга.
В этом примере, в начале есть вниз сила тяжести ( v), так что c, e, g, h, i, и jупасть в нижней части карты. Все остальные персонажи скользят вниз до удара о стену, оставляя карту так:
.........#..
a..d......#.
#..#.f.....#
.b.#.#...###
.#.......#q#
.........###
Затем мы переходим к правой гравитации ( >), что оставляет нас с этим: Обратите внимание, как aстеки рядом с d.
.........#..
........ad#.
#..#......f#
..b#.#...###
.#.......#q#
.........###
Наконец, мы моделируем восходящую гравитацию ( ^), во время которой aи bпадают с карты.
.........#..
.........d#.
#..#......f#
...#.#...###
.#.......#q#
.........###
Ваша задача - вывести оставшиеся символы после гравитационных сдвигов. Они могут быть даны в любом порядке. Для этого примера вы можете вывести любую перестановку dfq.
Testcases
Для следующей карты:
abcde
.....
##.##
v = abde
v> = <nothing>
Для следующей карты:
######
#....#
abcdef
#.gh..
######
> = <nothing>
< = gh
^> = bcde
v< = bghef