도전
합리적인 방법으로 입력 할 때 평면에 문자를 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있습니다.
테스트 케이스
다음지도의 경우 :
abcde
.....
##.##
v = abde
v> = <nothing>
다음지도의 경우 :
######
#....#
abcdef
#.gh..
######
> = <nothing>
< = gh
^> = bcde
v< = bghef