9.1 Game of Life

配列指向プログラミングの例として、各点を順に計算するのではなく、対象となる2次元空間をそのまま配列で表現し、配列操作のみで全点を計算する手法を紹介する。

最初の例として、APL版の解説ビデオもある ConwayのGame of Lifeを使ってみる。

ソースコード

⟨term⟩ ← •Import"lib/lib.bqn"
LifeInit ← •rand.Range⟜2˜∘⋈
LifeNext ← (3⊸=∨4⊸=∘×)⟜(+´(⥊⋈⌜˜1-↕3)⌽¨<)
LifeShow ← {term.Print⊑⟜"·⚇"˜¨𝕩 ⋄ 𝕩}

# demo
•MakeRand•UnixTime
{•Delay÷50 ⋄ term.Up 2+k ⋄ LifeShow LifeNext 𝕩}⍟500 LifeShow LifeInit⟜(2⊸×)k ← 40

この中で使っているlib.bqnはhttps://github.com/shnarazk/learn-bqn/blob/main/lib/lib.bqnから入手できる。

プログラムの説明

TODO

実行例