問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
A さんと B さんの 2 人でいびつなリバーシの対戦をします。
盤面・ターン数・各行動で石を置く座標についての情報が与えられます。
盤面に穴の空いているマスは '#' , 何も置かれていないマスは '.' になっています。
プレイヤーは次の操作を 1 回ずつ交互に合計 N 回繰り返します。なお、先攻は A さんです。
・ A さんは盤面のマス(Ya_i, Xa_i)に、Bさんは盤面のマス(Yb_i, Xb_i)に石を置きます。すでに相手の石が置かれている場合は相手の石を自分の石に置き換える。
・ 次に、縦横斜めに自分の石ではさんだ連続した穴の空いていないマスに自分の石をおきます。この時、既に相手の石が置かれている場合は相手の石を自分の石に置き換える。
・ 新たに置いた石によってさらに石が置けるようになった場合でもその時点で操作を終える。
操作を終えた後の盤面を出力してください。
ただし、A さんの石が置かれているマスを 'A' , B さんの石が置かれているマスを 'B' として出力してください。
なお、マスの座標系は左上端のマスの座標を ( y , x ) = ( 0 , 0 ) とし、下方向が y 座標の正の向き、右方向が x 座標の正の向きとします。
例として、灰色のマスを穴の空いているマスとしたときに、
図 1 のような盤面のとき赤いマスに A さんが石を置くと図 2 のようになり、図 3 のような盤面のとき赤いマスに B さんが石を置くと図 4 のようになります。
図1
図2
図3
図4
H W N
S_0
...
S_(H-1)
Ya_1 Xa_1
Yb_1 Xb_1
...
Ya_N Xa_N
Yb_N Xb_N
H 行での出力
・ 操作後の盤面を H 行で出力してください。
T_0
...
T_(H-1)
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ H, W, N ≦ 20
・ 0 ≦ Y_i < H, 0 ≦ X_i < W
・ S は W 文字の文字列
・ S の各文字は '.' または '#'
・ S[Ya_i][Xa_i] = '.'
・ S[Yb_i][Xb_i] = '.'
3 3 2
...
...
.#.
0 0
2 0
0 2
2 2
AAA
...
B#B
5 5 3
....#
.....
.....
.....
.#...
0 0
4 0
2 2
4 2
3 4
1 1
A...#
.B...
..A..
....A
B#B..