game of life 1

境界条件は周期境界条件(torus)とする。


以下のプログラムで上下左右のセルをコピーし合う。

Define conv_to_torus(mat)=
Func
:©行列の上下左右をつなぐ。
:Local rdim,cdim,mat_top,mat_bottom,mat_temp,mat_left,mat_right
:
:©上端行を下端行の下に挿入し、下端行を上端行の上に挿入する。
:rdim:=rowDim(mat)
:cdim:=colDim(mat)
:mat_top:=mat[1]
:mat_bottom:=mat[rdim]
:mat_temp:=colAugment(colAugment(mat_bottom,mat),mat_top)
:
:©左端列を右端列の右に挿入し、右端列を左端列の左に挿入する。
:rdim:=rowDim(mat_temp)
:cdim:=colDim(mat_temp)
:mat_left:=subMat(mat_temp,1,1,rdim,1)
:mat_right:=subMat(mat_temp,1,cdim,rdim,cdim)
:Return augment(augment(mat_right,mat_temp),mat_left)
:EndFunc


実行結果:

f:id:ti-nspire:20151015074955j:plain


参考:

新 Excelコンピュータシミュレーション -数学モデルを作って楽しく学ぼう-

新 Excelコンピュータシミュレーション -数学モデルを作って楽しく学ぼう-

p.144-166