Chapter 3: The World of Simple Programs

Section 8: Cyclic Tag Systems

Implementation [of cyclic tag systems]

With the rules for the cyclic tag system on page 95 given as {{1, 1}, {1, 0}}, the evolution can be obtained from

CTEvolveList[rules_, init_, t_] := Map[Last, NestList[CTStep, {rules, init}, t]] CTStep[{{r_, s___}, {0, a___}}] := {{s, r}, {a}} CTStep[{{r_, s___}, {1, a___}}] := {{s, r}, Join[{a}, r]} CTStep[{u_, {}}] := {u, {}}

The leading elements on many more than t successive steps can be obtained directly from

CTList[rules_, init_, t_] := Flatten[Map[Last, NestList[CTListStep, {rules, init}, t]]] CTListStep[{rules_, list_}] := {RotateLeft[rules, Length[list]], Flatten[rules[[Mod[Flatten[Position[list, 1]], Length[rules], 1]]]]}

From Stephen Wolfram: A New Kind of Science [citation]