1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Aランクレベルアップメニュー(言語選択)
  4. 問題一覧 Ruby編
  5. いびつなひとりリバーシ Ruby編

Aランクレベルアップメニューのアイコン
いびつなひとりリバーシ Ruby編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

盤面・石を置く回数・各操作で石を置くマスについての情報が与えられます。
はじめ、プレイヤーの石が置かれているマスは '*' になっており、穴の空いているマスは '#' , 何も置かれていないマスは '.' になっています。

プレイヤーは次の操作を N 回繰り返します。

・ 盤面のマス ( Y_i, X_i ) に石を置き、縦横斜めに自分の石ではさんだ連続した穴の空いていないマスの間に自分の石を置く。
・ 新たに置いた石によってさらに石が置けるようになった場合でもその時点で操作を終える。

操作を終えた後の盤面を出力してください。
なお、マスの座標系は左上端のマスの座標を ( y , x ) = ( 0 , 0 ) とし、下方向が y 座標の正の向き、右方向が x 座標の正の向きとします。




入力される値

H W N       
S_0
...
S_(H-1)
Y_1 X_1
...
Y_N X_N


・ 1 行目では、盤面の行数 H , 列数 W , 石を置く回数 N が与えられます。
・ 続く H 行のうち i 行目 (0 ≦ i < H) には、盤面の i 行目の文字をまとめた文字列 S_i が与えられ、S_i の j 文字目は、盤面の i 行目の j 列目に書かれている文字を表します。
・ 続く N 行のうち i 行目 (0 ≦ i ≦ N) には、i 回目の操作で石を置く座標 Y_i X_i が与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

H 行での出力

・ 操作後の盤面を H 行で出力してください。

T_0
...
T_(H-1)

条件

すべてのテストケースにおいて、以下の条件をみたします。

・ 1 ≦ H, W, N ≦ 20
・ 0 ≦ Y_i < H, 0 ≦ X_i < W
・ S は W 文字の文字列
・ S の各文字は '.' または '*' または '#'
・ S[Y_i][X_i] = '.'

入力例1

3 3 1
..*
...
*.*
0 0

出力例1

***
**.
*.*

入力例2

18 18 10
.........*........
....*..*..*.#.#..#
......**.#........
..#.....#.........
...#..............
.*..........*....*
#.................
...*.............#
..#.......*.......
..................
......*..........*
#.........*.......
.#..............*.
..........*....*#.
.#................
......#...........
.........#..#.....
..........#..*....
13 1
17 8
0 0
0 17
8 17
15 15
10 10
17 17
9 15
5 5

出力例2

******************
.*..**.*.**.#.#.*#
..*..****#.....*..
..#*.*.*#.....*...
...#***......*....
.************.*..*
#...***........*..
...*.*.*........*#
..#..*..*.********
.....*...*********
.....*************
#....*...***.....*
.#...*..*...*...**
.**********..*.*#*
.#......*.....**.*
......#.********.*
........*#..#.*.**
........*.#..*****

問題一覧へ戻る

ページの先頭へ戻る