ライフゲーム(課題1201)

[全課題リスト|サンプルソース|完成した実行ファイル(実習室のみ)|完成したソースの例] Time-stamp: "2004/12/19 Sun 21:09 hig"

講義L12 (代替) で説明したように, ライフゲームとは, 2次元の格子状に並んだセルに生息する生物が, 次のルールにしたがって生存と死滅を繰り返すものです.

現在の n[x][y]周囲8地点中の生存の地点数次の n[x][y]
0,1,4--8死(死滅)
2,3生(のまま)
0--2,4--8死(のまま)
3生(誕生)

サンプル life1.c に上のルール(だけ)を書き加えて, シミュレーションしよう.

このプログラムは 3つのファイル life1.c, matrix.c, matrix.h にわかれています. int main() は life1.c にあります. 開発方法の説明を少し変更して, life1.c と matrix.c をソリューションエクスプローラのソースファイルのところに追加, matrix.h をソリューションエクスプローラのヘッダーファイルのところに追加します.

初期条件を与えるには, 講義L12 (代替) で説明した標準入力を利用します. 初期条件は ファイルinput?.txtに記述されています. このファイルをエディタで作り(またはWebからダウンロードして保存し) 標準入力から life1 に与えます. Linux のシェルなら

% ./life1 < input1.txt
または
% cat input1.txt | ./life1 
としますが, Visual Studio .NET の中では, 説明にしたがって, プロジェクト > プロパティ > デバッグ > コマンドライン引数 に, < Q:\csc\cp\input1.txt と指定することにします.

ファイル input?.txtの書式は次の通り(# 以降はコメントだから書かないでね)

5  # 行の数
8  # 列の数
0 0 0 0 0 0 0 0 # 0 が死滅 1 が生存
0 1 1 0 0 0 0 0 # 0 が死滅 1 が生存
0 0 0 1 0 0 0 0 # 0 が死滅 1 が生存
0 0 0 1 0 0 0 0 # 0 が死滅 1 が生存
0 0 0 0 0 0 0 0 # 0 が死滅 1 が生存

次のような初期条件で始めて, どのように変化するかを観察しよう.

死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死  死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死  死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死    死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死
死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死 死

他にも次のような初期条件で試してみよう.

ライフゲームについて, Web で検索して調べてみよう.
Copyright © 2004 Saburo Higuchi. All rights reserved.
樋口三郎, hig mail address