問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
マップの行数 H と列数 W , 現在の座標 sy , sx , 移動の回数 N が与えられます。
続けて、障害物を '#' で、移動可能な場所を '.' で表した H 行 W 列 のマップ S_1 ... S_H と N 回の移動の向き d_1 ... d_N が与えられます。
移動者ははじめ北を向いています。移動者は、1 回の移動で次の行動を行います。
「移動の向きに方向転換したのち、1 マス進む。」
各移動が可能である場合、移動後の y , x 座標を出力してください。
移動が可能でない場合、移動後の座標を出力する代わりに "Stop" を出力して、以降の移動を打ち切ってください。
各移動が可能であるということは、以下の図の通り
「移動先が障害物でない かつ 移動先がマップの範囲外でない」
ということを意味します。
なお、マスの座標系は左上端のマスの座標を ( y , x ) = ( 0 , 0 ) とし、
下方向が y 座標の正の向き、右方向が x 座標の正の向きとします。
右に移動
H W sy sx N
S_0
...
S_(H-1)
d_1
...
d_N
M (1 ≦ M ≦ N) 行の出力
・ k (1 ≦ k ≦ M) 回目の移動後の y , x 座標、y_k, x_k を出力してください。
・ ただし、M 回目で移動しきれない場合、"Stop" を出力してください。
y_1 x_1
...
y_k x_k
...
y_M x_M
y_1 x_1
...
y_k x_k
...
y_(M-1) x_(M-1)
Stop
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ H, W ≦ 20
・ 1 ≦ N ≦ 100
・ 0 ≦ sy < H , 0 ≦ sx < W
・ S_i は W 文字の文字列
・ マップ上の(sy, sx)のマスは必ず '.'
・ S_i の各文字は '.' または '#'
・ d_i は、L, R のいずれかであり、それぞれ 左・右 を意味します。
7 3 2 1 5
..#
...
...
...
..#
.#.
##.
L
L
L
L
L
2 0
3 0
3 1
2 1
2 0
7 11 1 5 43
.##........
.#......##.
.#....#...#
.###......#
#......###.
..#....###.
#.#........
L
L
R
L
R
L
R
L
L
R
L
R
L
L
L
L
R
R
R
L
R
L
R
L
L
R
L
L
R
L
R
L
R
R
R
R
L
R
L
L
L
R
R
1 4
2 4
2 3
Stop