
MATHEMATICA

CAStep[rule_, a_] := Map[rule[[10  #]] &, ListConvolve[{{0, 2, 0}, {2, 1, 2}, {0, 2, 0}}, a, 2], {2}];
code = 315; stages = 128;
rule = IntegerDigits[code, 2, 10];
g = 2 * stages + 1; (* Maximum size of grid *)
a = PadLeft[{{1}}, {g, g}, 0, Floor[{g, g}/2]]; (* Initial ON cell on grid *)
ca = a;
ca = Table[ca = CAStep[rule, ca], {n, 1, stages + 1}];
PrependTo[ca, a];
(* Trim full grid to reflect growth by one cell at each stage *)
k = (Length[ca[[1]]] + 1)/2;
ca = Table[Table[Part[ca[[n]] [[j]], Range[k + 1  n, k  1 + n]], {j, k + 1  n, k  1 + n}], {n, 1, k}];
Table[FromDigits[Part[ca[[i]] [[i]], Range[1, i]], 2], {i, 1, stages  1}]
