Nimでライフゲームするためのライブラリを作った
Nimのパッケージ一覧になさそうだったので、Nimの勉強のひとつとして軽く作ってみた
ライフゲームのライブラリなんてパッケージに追加してもらえるのか?と半信半疑ながらPRを送ったら普通に取り込んでもらえた
サンプル
ライブラリをJSバックエンドにコンパイルして作成したサンプルWebアプリはこちら 普通にCバックエンドで作ったアプリは下記
code:nim
import gameoflife
from os import sleep
var board: Board = @[
]
while true:
board.nextStep()
board.print
echo "-----------------------------------"
sleep(100)
https://gyazo.com/ff7dd951b9f72296c4f2848b81f91f01
実装
実装は単純。仕様もそんなに難しくないと感じた
実装の流れは下記の通り
ライフゲームのボード上の全セルの状態を検査して、次の状態を保持するボードの一時変数にセルの状態をセット
全セルの検査が完了したタイミングで、一時変数の値でボードを上書き
次のループ
もともと存在するボードをいきなり上書きすると隣接する未検査のセルの次の状態に影響を及ぼすので一時変数に保持させるようにした