メインコンテンツまでスキップ

Textile&Knit: 1次元セル・オートマトン実装のためのgo module

· 約3分

1次元のセル・オートマトンをある程度おなじインターフェースで扱えるようにするためのmoduleとして gitlab.com/yoko-chance/textile を作製した。
その具体的な実装は gitlab.com/yoko-chance/knit に分けた。

たぶん6,7年くらい前にpythonでセル・オートマトンの実装をはじめて、golangを覚えようとgolangで作り直してそこから具体的な実装以外をTextileに切り分けたのが2020年ぐらいらしい
その頃のバージョンはあんまりうまくできてなくて、あんまりうれしい感じじゃなかった気がする。
最近0から考え直して作り直したのがいまのバージョン。

最初のバージョンはウルフラムのセル・オートマトンから実装を始めたのもあって、だいぶそれに思考が寄ってたと思う。
1次元の反応拡散系のシミュレーションに使おうとしてかなり苦戦した記憶がある。

1次元の反応拡散系のシミュレーションはずっとやりたかったことで、今回の作り直しでとりあえずかたちにするところまで進められそうな気がしてきた。
これについてはまたそのうち書く。

KnitにはTextileを使った具体的な実装を追加していく予定。
サンプル saple/diffusion/main.go を動かすとこんな感じ。
まだ1ステップで広がるのが1マスとなりまでしか出来ていないので、その実装からやっていく。

#INS ❯ go run sample/diffusion/main.go
0000000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111100000000000000000000000000000000000000