僕は夏休みの自由研究のテーマとして、生き物観察を選択し、生き物観察キットを購入した。
この生き物は3次元グリッド状の空間を好んで生息する。 各セルには最大1匹までしか入れない。 周囲の環境に合わせ1日が経過するごとに誕生と死滅を繰り返す。 誕生と死滅の条件は、セルに隣接する生き物の数に依存する。 ここで、あるセルに生き物が隣接するとは、あるセルと生き物が生息しているもう一つのセルが面、辺、または点を共有していることを言う。 誕生と死滅のルールは次のようになる。
今回購入した飼育箱はセルの数が5*5*5である立方体の飼育箱だ。 この飼育箱ではこの生き物はどのような振る舞いをするのだろうか…? とても楽しみである。
〜数日後〜
とりあえず、飼育してみたが… 毎日観察するなんて時間がかかるし、僕にはめんどくさくてやる気がおきない。 そうだ、コンピューターとプログラムを使ってシミュレートしよう。
入力は複数のデータセットからなる。 各データセットは以下のフォーマットで与えられる。
N (z = 0 の飼育箱の状態) (空行) (z = 1 の飼育箱の状態) (空行) (z = 2 の飼育箱の状態) (空行) (z = 3 の飼育箱の状態) (空行) (z = 4 の飼育箱の状態) (空行) M1 a1 a2 … aM1 M2 b1 b2 … bM2
最初にシミュレートする日数 N が与えられる。
次に飼育箱の初期状態の情報が与えられる。これは5つの5*5の2次元グリッドで与えられる。
各2次元グリッドは0と1から成り立ち、1は生き物がいることを示し、0は何もいないことを示す。
例えば、 z = 0のセルの状態の2次元グリッドの4行2列目の値が1だった場合、飼育箱の座標(1, 3, 0)の位置に生き物がいることを表す。
次に、整数 M1 が与えられ、そのあとに M1 個の数字 ai が与えられる。
次に、整数 M2 が与えられ、そのあとに M2 個の数字 bj が与えられる。
入力の終わりは N = 0で表される。
入力は以下の条件を満たす。
各データセットに対し、 N 日経過後の状態を出力せよ。
出力は以下のフォーマットに従う。
Case (テストケースの番号): (z = 0 の飼育箱の状態) (空行) (z = 1 の飼育箱の状態) (空行) (z = 2 の飼育箱の状態) (空行) (z = 3 の飼育箱の状態) (空行) (z = 4 の飼育箱の状態)
1行目にテストケース番号を出力し、次の行から N 日経過後の状態として、5*5の2次元グリッドを5つ出力せよ。 各テストケースの出力間には空行を出力しなさい。
5 00000 01010 00000 00100 00000 00000 01010 00000 01010 00000 00000 00100 00000 01010 00000 00000 01010 00000 00100 00000 00000 00000 00100 00000 00000 1 2 2 3 4 4 01110 00100 00100 00100 01110 01110 10001 10000 10001 01110 11111 10001 11111 10000 10000 01110 10001 10000 10001 01110 00000 00000 00000 00000 00000 2 3 4 1 2 100 00100 01010 01110 10001 10001 01110 00100 00100 00100 01110 00000 00000 00000 00000 00000 11111 00010 00100 01000 11111 10001 10001 10001 10001 01110 5 1 3 5 7 9 5 0 2 4 6 8 0
Case 1: 00000 00000 01010 01110 10101 00000 10001 00000 00000 00000 00000 00000 11111 10001 00000 00000 00000 00000 00000 01010 00000 00000 01110 00100 11111 Case 2: 00010 10110 00000 11000 10000 00001 00000 10101 00010 00100 10001 00000 00000 00000 00010 01110 10001 00000 00001 10000 00000 00000 00111 01001 01000 Case 3: 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000