script property

List<List<String>> script
getter/setter pair

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++ # 次の世代"
  ]
];