1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Aランク・スキルチェック過去問題セット(言語選択)
  4. 問題一覧 Clojure(Beta)編
  5. 「落ちものシミュレーション」を解くために : part2 Clojure(Beta)編

Aランク・スキルチェック過去問題セットのサムネイル
「落ちものシミュレーション」を解くために : part2 Clojure(Beta)編(paizaランク B 相当)

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

問題

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

1×1 の長方形が N 個落ちてきます。
N 個の長方形が落ちてきた後のフィールドの状態を表示するプログラムを書いてください。
今回の問題では、落ちてくる長方形の直下に他の長方形がある場合に注意してください。

ゲームの仕様は次のようになっています。

・ ゲームは縦幅 H、横幅 W の長方形のフィールドで行われます。
・ ゲームが始まると、様々なサイズの長方形がフィールドの上方から一つずつ順番に落ちてきます。
・ 落ちてくる長方形の直下に他の長方形もしくはフィールドの底辺がある場合、接触したとみなして長方形の位置は固定されます。

入力される値

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

H W N
h_1 w_1 x_1
h_2 w_2 x_2
...
h_N w_N x_N

・ 1 行目には 3 つの整数 H, W, N がこの順に半角スペース区切りで与えられます。H はフィールドの縦幅を、W はフィールドの横幅を、 N は落ちてくる長方形の個数を表します。
・ 続く N 行のうち i 行目 (1 ≦ i ≦ N) には i 番目に落ちてくる長方形のサイズと落ちてくる位置の情報が入力されます。ここではこの長方形の縦幅 h_i、横幅 w_i、長方形の左端とフィールドの左端の距離 x_i がこの順に半角スペース区切りで与えられます (問題文中の図を参照)。
・ 入力は合計で N + 1 行であり、入力最終行の最後に改行が 1 つ入ります。


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

N 個の長方形がすべて落ちた後のフィールドの状態を、以下のフォーマットで出力してください。

f_1
f_2
...
f_H

・ 期待する出力は H 行からなります。
・ 出力の i 行目 (1 ≦ i ≦ H) にフィールドの上端から距離 i の各地点の状態を表す長さ W の文字列 f_i を出力してください。
・ f_i の j 番目 (1 ≦ j ≦ W) の文字は、フィールドの上端、左端からの距離が i, j となる地点の状態を表し、ここにブロックがあるときは "#"、ないときは "." となります。
・ 出力の H 行目の最後に改行を 1 つ入れ、余計な文字、空行を含んではいけません。

条件

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

添字の範囲は 1 ≦ i ≦ N とする。

・ 入力されるすべての値は整数
・ 1 ≦ H, W, N ≦ 30
・ h_i = 1
・ w_i = 1
・ 0 ≦ x_i ≦ W - 1
・ N 個の長方形はすべてフィールド内に収まる

入力例1

3 3 3
1 1 1
1 1 2
1 1 1

出力例1

...
.#.
.##

入力例2

4 3 8
1 1 1
1 1 2
1 1 1
1 1 2
1 1 1
1 1 2
1 1 1
1 1 2

出力例2

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

入力例3

2 7 5
1 1 2
1 1 1
1 1 3
1 1 5
1 1 6

出力例3

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

入力例4

10 1 10
1 1 0
1 1 0
1 1 0
1 1 0
1 1 0
1 1 0
1 1 0
1 1 0
1 1 0
1 1 0

出力例4

#
#
#
#
#
#
#
#
#
#

問題一覧へ戻る

ページの先頭へ戻る