問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
マップ上をへびが移動していきます。
マップの行数 H と列数 W ,障害物を '#' で移動可能な場所を '.' で表した H 行 W 列のマップ S_1 ... S_H , 現在の座標 sy , sx , 方向転換の回数 N が与えられます。
続けて N 回の方向転換をおこなう時刻 t_1 ... t_N, 転換する向き d_1 ... d_N が与えられます。
へびははじめは北を向いています。
へびは進む先のマスに自分の身体や障害物がない時に移動ができます。
時刻 0 から 99 までの間、へびは各時刻に次の行動を最大 100 回繰り返します。
・ 方向転換をおこなう時刻の場合、指定の向きに方向転換したのち 1 マス身体を伸ばす。そうでない時は、今向いている方向に 1 マス身体を伸ばす。
時刻が 99 の時の行動を終えるか、移動できなくなった時、移動を終了します。
移動終了時にへびの体のあるマスを '*' にしたマップを出力してください。
移動が可能であるということは、
「移動先のマスに自分の身体や障害物がない かつ 移動先がマップの範囲外でない」
ということを意味します。
なお、マスの座標系は左上端のマスの座標を ( y , x ) = ( 0 , 0 ) とし、
下方向が y 座標の正の向き、右方向が x 座標の正の向きとします。
移動の一例をあげます。例えば次のような入力が与えられた時は図のような移動になります。
図は、時刻 T の行動前の状態を表しています。
5 5 3 1 3
.....
.....
.....
.....
.....
2 R
4 R
6 R
H W sy sx N
S_0
...
S_(H-1)
t_1 d_1
...
t_N d_N
H 行の出力(マップの出力)
・ へびの移動終了時にへびの身体があるマスを '*' にしたマップを H 行で出力してください。
T_0
...
T_(H-1)
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ H, W ≦ 50
・ 1 ≦ N ≦ 100
・ 0 ≦ sy < H
・ 0 ≦ sx < W
・ 1 ≦ t_i ≦ 99
・ t_i < t_(i+1)
・ 時刻は 0 から始まり、99 の時の移動を終えるまで、もしくは移動ができなくなるまで移動を繰り返す。
・ S_i は W 文字の文字列
・ マップ上の (sy, sx) のマスは必ず '.'
・ S の各文字は '.' または '#'
・ d_i は、L, R のいずれかであり、それぞれ 左・右 を意味します。
5 5 3 1 3
.....
.....
.....
.....
.....
2 R
4 R
6 R
.....
.***.
.*.*.
.***.
.....
18 39 12 1 20
........................#...........#..
.......................................
.......................................
.........#........#..#.........#.......
.............................#.......#.
.......................................
...................................#...
......................................#
...................#...................
.......................................
....................................#..
.......................#.....#.....#...
..............................#........
....#..............#.....#......#......
.......................................
.....#.................................
...#..................#................
......#............................#.#.
3 R
8 R
13 L
16 R
19 L
21 L
30 R
32 L
37 R
40 L
42 R
48 R
62 R
73 R
77 R
79 R
83 L
84 R
94 R
99 L
........................#...........#..
................*******................
................*.....*................
.........#...****.#..#*........#.......
.............*........*......#.......#.
.............*........*................
.............*........*............#...
.............*........*...............#
...........***.....#..*................
.******....*..........*................
.*....*....*..........*.............#..
.*....*....*..........*#.....#.....#...
.*....*....*..........*.......#........
....#.*....*.......#..*..#......#......
......****.*..........*................
.....#...*.************................
...#.....*.*..........#................
......#..***.......................#.#.