No.459 C-VS for yukicoder
タグ : / 解いたユーザー数 58
作問者 :

Note
この問題はAdvent Calendar Contest Advent Calendar 2016の10日目の問題として作られました。
codevsお疲れ様でした!(2016/12/10)
問題文
maiさんはc-vsと呼ばれるゲームAIコンテストに参加しています。
c-vsとは?
高さ幅のフィールドに与えられたパック(高さ3幅3の、少なくとも1つのブロックを含む塊)を落とす、いわゆる「ぷよぷよゲー」です。
連鎖してブロックを消すはずですが、後述の事情により、落とすだけのゲームになっています。
c-vsは、次の流れに従ってゲームが進行します。
- パックが与えられ、プレイヤーは投下位置を決める。
指定出来るのはからの範囲の整数で、は左端、は右端から2つ左に移動した位置である。回転はできない。 - 決めた投下位置にパックの左端を合わせ、その位置にパックを落下させる。
- ブロックは下に床があるか、積まれたブロックに当たるまで落下する。
- 1から3までの流れを1ターンとする。これを繰り返す。

maiさんは舞葉君とマッチングし、ゲームが開始しました。
しかし、ゲームが開始した瞬間、舞葉君は特殊コマンドを入力したため、フィールドに落ちてくるパックに含まれるブロックが全て黒に塗りつぶされてしまいました。
これでは連鎖してブロックを消すことが出来ません。
maiさんはターン目のパックの投下位置をに指定しました()。結果、ターン目の3.が終了した時点でのフィールドの状態はでした。
どのようなパックが与えられたのでしょうか?maiさんに与えられた個のパックの中身を求めてください。
入力
...
以下の制約をすべて同時に満たす。
は'.'と'#'から成る文字列で、1つ以上'#'を含む。
数字が与えられるものは全て整数である
フィールドの状態は個の文字列で表現されます。
左から番目、上から番目のフィールドのセルは、文字列の左から番目に対応し、
'#'であればそのセルにブロックが存在、'.'であれば空であることを示します。
与えられるフィールドの状態は、題意を満たすゲームの進行によって得られるものに限られます。
出力
パックを次のフォーマットに従って、改行区切りで個出力してください。すなわち、行出力してください。
上から番目のパックはに対応するようにしてください。
パックは3行3文字の文字列で表現されます。
パックの上から番目、左から番目のセルは行文字目に対応し、
そのセルが空ならば'.'、ブロックが存在するならば'#'となります。
問題文にもありますが、全てのパックは必ず1つ以上のブロックを持つことに注意してください。
最後に改行してください。
c++14によるスペシャルジャッジを使用しています。
解は1つとは限りませんが、どの解を出力してもACとなります。
サンプル
サンプル1
入力
4 5 3 ...#. ...#. ..##. #.### 0 2 2
出力例
... #.. ..# ##. .#. ... ..# .#. .#.

サンプル2
入力
3 3 2 ### ### ### 0 0
出力例
... ... #.. .## ### ###
ブロックを持たないパックは出力しないでください。
サンプル3
入力
4 11 5 ....#...... ##.##..##.. ##.###.#### ######.#### 0 2 4 6 8
出力例
##. ##. ##. .## .## ### ... .#. ##. .#. .## .## ... .## ###

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。