game of life 2

最外周以外のすべてのセルのムーア近傍(Moore neighborhood)の和を求める。
最外周のセルを削除してから返す。

Define moore_sum(mat_torus)=
Func
:©最外周以外のすべてのセルのムーア近傍の和を求める。
:Local rdim,cdim,mat_temp,r,c,temp
:
:©ムーア近傍の和を格納する行列を用意する。
:mat_temp:=mat_torus
:
:©最外周以外のすべてのセルを走査してムーア近傍の和を求める。
:rdim:=rowDim(mat_torus)
:cdim:=colDim(mat_torus)
:For r,2,rdim-1,1
:   For c,2,cdim-1,1
:      temp:=subMat(mat_torus,r-1,c-1,r+1,c+1)
:      temp:=mat▶list(temp)
:      mat_temp[r,c]:=sum(temp)-mat_torus[r,c]
:   EndFor
:EndFor
:
:©最外周のセルを削除してから返す。
:Return subMat(mat_temp,2,2,rdim-1,cdim-1)
:EndFunc


実行結果:
f:id:ti-nspire:20151017072445j:plain:w1000