script property
Implementation
List<List<String>> script = [
[
":ans 0",
"@M--",
"@N--",
":gworld (@M + 1) (@N + 1) # オフスクリーンを設定する",
"#",
"# 初期形状を盤に配置する",
"#",
"@m = int ((@M + 1) / 2 - @@0 0 / 2) # 初期形状が盤の中央にくるようにオフセット計算する",
"@n = int ((@N + 1) / 2 - @@0 1 / 2) # 初期形状が盤の中央にくるようにオフセット計算する",
"for @j = 0; @j < @@0 1; @j++",
" for @i = 0; @i < @@0 0; @i++",
" @@a (@n + @j) (@m + @i) = @@0 (2 + @j * @@0 0 + @i)",
" next",
"next",
"@g = 1 # 世代"
],
[
"#",
"# メイン",
"#",
":gput @@a # 配列の内容をオフスクリーンに描画",
// ":sprint @@s [\"Generation ] @g",
// ":gtext @@s 2 9 255",
"@G = @g",
"for @i = 0; @i <= @N; @i++",
" for @j = 0; @j <= @M; @j++",
" if @@a @i @j",
" @@i 0 = @i - 1 < 0 ? @N (@i - 1)",
" @@i 1 = @i + 1 > @N ? 0 (@i + 1)",
" @@j 0 = @j - 1 < 0 ? @M (@j - 1)",
" @@j 1 = @j + 1 > @M ? 0 (@j + 1)",
" @@b (@@i 0) (@@j 0)++; @@b (@@i 0) @j++; @@b (@@i 0) (@@j 1)++",
" @@b @i (@@j 0)++; @@b @i (@@j 1)++",
" @@b (@@i 1) (@@j 0)++; @@b (@@i 1) @j++; @@b (@@i 1) (@@j 1)++",
" endif",
" next",
"next",
"for @i = 0; @i <= @N; @i++",
" for @j = 0; @j <= @M; @j++",
" if @@b @i @j != 2",
" if @@b @i @j == 3; @@a @i @j++; else; @@a @i @j = 0; endif",
" if @@a @i @j >= 255; @@a @i @j = 1; endif",
" endif",
" @@b @i @j = 0",
" next",
"next",
"@g++ # 次の世代"
]
];