1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Aランク実力確認問題セット1(言語選択)
  4. 問題一覧 Java編
  5. スライドゲーム Java編

Aランク実力確認問題セット1のサムネイル
スライドゲーム Java編(paizaランク B 相当)

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

問題

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

H 行 W 列のグリッドがあり、各マスは .# のいずれかです。
上から i 行目、右から j 列目をマス (i,j) と表します。
このグリッドはトーラス状であるとみなします。
すなわち、各 i (1 ≦ i ≦ H) に対してマス (i,W) の右にマス (i,1) があり、各 j (1 ≦ j ≦ W) に対して マス(H,j) の下にマス (1,j) があるとします。

Q 個のクエリが与えられます。
各クエリは以下の 2 種類のいずれかです。
1 p : 上から p 行目のマスを左に 1 マスずつずらす。言い換えれば、マス (p,j) (1 ≦ j ≦ W) をマス (p,j) の右にあるマスで同時に置き換える。
2 q : 左から q 列目のマスを上に 1 マスずつずらす。言い換えれば、マス (i,q) (1 ≦ i ≦ H) をマス (i,q) の下にあるマスで同時に置き換える。

すべてのクエリを順に処理した後のグリッドを出力してください。

入力される値

入力は以下のフォーマットで与えられます。

H W Q
S_1
S_2
...
S_H
query_1
query_2
...
query_Q

・ 1 行目には、グリッドの行数と列数を表す整数 H, W とクエリの数を表す整数 Q がこの順に空白区切りで与えられます。
・ 続く H 行の i (1 ≦ i ≦ H) 行目には、i 行目のグリッドの状態を表す文字列 S_i が与えられます。
・ 続く Q 行の i (1 ≦ i ≦ Q) 行目には、i 個目のクエリが与えられます。
・ 入力は合計で H+Q+1 行からなり、入力値最終行の末尾に改行が1つ入ります。

各クエリは以下の 2 種類のいずれかのフォーマットで与えられます。

1 p
2 q


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

期待する出力は H 行からなります。
i (1 ≦ i ≦ H) 行目には、すべてのクエリを順に処理した後のグリッドの i 行目を出力してください。
最後は改行し、余計な文字、空行を含んではいけません。

条件

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

・ 1 ≦ H, W ≦ 500
・ 1 ≦ Q ≦ 10^4
・ S_i は . と # からなる長さ W の文字列
・ 1 番目の形式のクエリについて、1 ≦ p ≦ H
・ 2 番目の形式のクエリについて、1 ≦ q ≦ W

入力例1

3 3 1
.#.
#.#
.#.
1 2

出力例1

.#.
.##
.#.

入力例2

3 3 1
#.#
.#.
#.#
2 1

出力例2

..#
##.
#.#

入力例3

7 10 10
##########
.#.#......
#.###.##..
..........
.#..##....
##########
.#..####.#
2 1
1 1
1 7
1 3
1 3
1 5
2 5
2 10
2 7
2 6

出力例3

####...##.
##.###....
###.......
....#....#
#..####..#
.#########
#..####.#.

問題一覧へ戻る

ページの先頭へ戻る