Implementation [of 2D substitution systems]
With the rule on page 187 given for example by {1 {{1, 0}, {1, 1}}, 0 {{0, 0}, {0, 0}}}
✖
{1 {{1, 0}, {1, 1}}, 0 {{0, 0}, {0, 0}}}
the result of t steps in the evolution of a 2D substitution system from a initial condition such as {{1}}
✖
{{1}}
is given by
SS2DEvolve[rule_, init_, t_] := Nest[Flatten2D[# /. rule] &, init, t]
✖
SS2DEvolve[rule_, init_, t_] := Nest[Flatten2D[# /. rule] &, init, t]
Flatten2D[list_] := Apply[Join, Map[MapThread[Join, #] &, list]]
✖
Flatten2D[list_] := Apply[Join, Map[MapThread[Join, #] &, list]]