In[]:=
AllInits[count_] := Tuples[{Range[0, 2], IntegerDigits[#, 2, count] & /@ Range[0, 2^count - 1]}]
In[]:=
TagSystemGenerationsCompiled = FunctionCompile[Function[{​​ Typed[initPhase, "MachineInteger"],​​ Typed[initState, TypeSpecifier["PackedArray"]["MachineInteger", 1]]}, Module[{​​ TagSystemNextGeneration, j, states},​​ TagSystemNextGeneration = Function[{initStateAndPhase}, Module[{newState, phase, newPhase, i},​​ newState = CreateDataStructure["DynamicArray"];​​ phase = initStateAndPhase["Part", -1];​​ For[i = 1, i < initStateAndPhase["Length"], ++i,​​ newPhase = -1;​​ If[initStateAndPhase[[i]]  0 && phase  0,​​ newState["Append", 0];​​ newPhase = 1;​​ ];​​ If[initStateAndPhase[[i]]  0 && phase  1,​​ newState["Append", 0];​​ newPhase = 2;​​ ];​​ If[initStateAndPhase[[i]]  0 && phase  2,​​ newPhase = 0;​​ ];​​ If[initStateAndPhase[[i]]  1 && phase  0,​​ newState["Append", 1];​​ newState["Append", 1];​​ newPhase = 2;​​ ];​​ If[initStateAndPhase[[i]]  1 && phase  1,​​ newState["Append", 1];​​ newPhase = 0;​​ ];​​ If[initStateAndPhase[[i]]  1 && phase  2,​​ newState["Append", 0];​​ newPhase = 1;​​ ];​​ phase = newPhase;​​ ];​​ newState["Append", phase]​​ ]];​​ states = CreateDataStructure["DynamicArray"];​​ states["Append", CreateDataStructure["DynamicArray"]];​​ For[j = 1, j ≤ Length[initState], ++j,​​ states["Part", 1]["Append", initState[[j]]];​​ ];​​ states["Part", 1]["Append", initPhase];​​ While[states["Length"] < 2 || Not[states["Part", -1] === states["Part", -2]],​​ states["Append", TagSystemNextGeneration[states["Part", -1]]];​​ ];​​ states["Length"]​​]]];
In[]:=
TagSystemGenerationsCompiled[0,{1,0,1,1,0,0,0,0,1,1,1}]
Out[]=
9
In[]:=
AllInits/@Range[3]
Out[]=
{{{0,{0}},{0,{1}},{1,{0}},{1,{1}},{2,{0}},{2,{1}}},{{0,{0,0}},{0,{0,1}},{0,{1,0}},{0,{1,1}},{1,{0,0}},{1,{0,1}},{1,{1,0}},{1,{1,1}},{2,{0,0}},{2,{0,1}},{2,{1,0}},{2,{1,1}}},{{0,{0,0,0}},{0,{0,0,1}},{0,{0,1,0}},{0,{0,1,1}},{0,{1,0,0}},{0,{1,0,1}},{0,{1,1,0}},{0,{1,1,1}},{1,{0,0,0}},{1,{0,0,1}},{1,{0,1,0}},{1,{0,1,1}},{1,{1,0,0}},{1,{1,0,1}},{1,{1,1,0}},{1,{1,1,1}},{2,{0,0,0}},{2,{0,0,1}},{2,{0,1,0}},{2,{0,1,1}},{2,{1,0,0}},{2,{1,0,1}},{2,{1,1,0}},{2,{1,1,1}}}}
In[]:=
KeySort[Counts[(TagSystemGenerationsCompiled[##]&@@@Catenate[AllInits/@Range[8]])]]
Out[]=
219,345,463,570,6111,7130,8109,9159,10167,11147,1298,1353,1446,1556,1627,1711,188,311,351,3616,3727,3844,3937,4010,498,501,537,551,562,575,619,6213,6317,6411,831