課題:ジョン H. コンウェイのライフ ゲームセル オートマトンを実装する最短のプログラムを作成します。【リンク】
編集:約 1 週間の競争の後、私は勝利者を選択しました: pdehaanは、perl で Matlab ソリューションを1文字打ち負かすことに成功しました。
Game of Life について聞いたことがない人のために説明すると、正方形のセルのグリッド (理想的には無限) を使用します。セルは、生きている (満たされている) か、死んでいる (空) 場合があります。次のルールを適用して、次のステップでどの細胞が生きているかを判断します。
- 生きている隣人が 2 つ未満の生きているセルは、人口不足が原因であるかのように死にます。
- 生きている隣人が 3 つ以上いる生きているセルは、過密状態のように死にます。
- 2 つまたは 3 つの生きた隣人を持つ生きたセルは、次の世代に生き続けます。
- ちょうど 3 つの生きている隣接セルを持つ死んだセルは、再生によって生きているセルになります。
プログラムは、コマンドライン引数として指定された 40x80 文字の ASCII テキスト ファイルと、実行する反復回数 (N) を読み取ります。最後に、N 回の反復後のシステムの状態を ASCII ファイル out.txt に出力します。
関連ファイルを使用して実行した例を次に示します。
in.txt:
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.............................................
.......................................X........................................
................................XXXXXX.X........................................
................................X...............................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
100回繰り返す:
Q:\>life in.txt 100
結果出力 (out.txt)
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.X...........................................
....................................X...........................................
................................XXXXX.XX........................................
................................X.....X.........................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
ルール:
- ファイルを読み書きするには、ファイル I/O を使用する必要があります。
- 入力ファイルと反復回数を引数として受け入れる必要があります
- 指定された形式で out.txt を生成する必要があります (存在する場合は上書きします)。
- ボードの端を処理する必要はありません(ラップアラウンド、無限グリッドなど)。
- 編集:出力ファイルに改行が必要です。
勝者は文字数によって決定されます。
幸運を!