In[]:=
initial={"11","10","0","1"};step[init_]:=Flatten[Table[a~~b,{a,init},{b,init}]]Nest[step,initial,2]
Out[]=
{11111111,11111110,1111110,1111111,11111011,11111010,1111100,1111101,1111011,1111010,111100,111101,1111111,1111110,111110,111111,11101111,11101110,1110110,1110111,11101011,11101010,1110100,1110101,1110011,1110010,111000,111001,1110111,1110110,111010,111011,1101111,1101110,110110,110111,1101011,1101010,110100,110101,110011,110010,11000,11001,110111,110110,11010,11011,1111111,1111110,111110,111111,1111011,1111010,111100,111101,111011,111010,11100,11101,111111,111110,11110,11111,10111111,10111110,1011110,1011111,10111011,10111010,1011100,1011101,1011011,1011010,101100,101101,1011111,1011110,101110,101111,10101111,10101110,1010110,1010111,10101011,10101010,1010100,1010101,1010011,1010010,101000,101001,1010111,1010110,101010,101011,1001111,1001110,100110,100111,1001011,1001010,100100,100101,100011,100010,10000,10001,100111,100110,10010,10011,1011111,1011110,101110,101111,1011011,1011010,101100,101101,101011,101010,10100,10101,101111,101110,10110,10111,0111111,0111110,011110,011111,0111011,0111010,011100,011101,011011,011010,01100,01101,011111,011110,01110,01111,0101111,0101110,010110,010111,0101011,0101010,010100,010101,010011,010010,01000,01001,010111,010110,01010,01011,001111,001110,00110,00111,001011,001010,00100,00101,00011,00010,0000,0001,00111,00110,0010,0011,011111,011110,01110,01111,011011,011010,01100,01101,01011,01010,0100,0101,01111,01110,0110,0111,1111111,1111110,111110,111111,1111011,1111010,111100,111101,111011,111010,11100,11101,111111,111110,11110,11111,1101111,1101110,110110,110111,1101011,1101010,110100,110101,110011,110010,11000,11001,110111,110110,11010,11011,101111,101110,10110,10111,101011,101010,10100,10101,10011,10010,1000,1001,10111,10110,1010,1011,111111,111110,11110,11111,111011,111010,11100,11101,11011,11010,1100,1101,11111,11110,1110,1111}
In[]:=
Tuples[{s1,s2,s3},2]
Out[]=
{{s1,s1},{s1,s2},{s1,s3},{s2,s1},{s2,s2},{s2,s3},{s3,s1},{s3,s2},{s3,s3}}
NestGraph[]
In[]:=
ResourceFunction["TokenEventGraph"][{s1_,s2_}:>{StringJoin[s1,s2]},{{"A","B"}},2]
Out[]=
In[]:=
ResourceFunction["TokenEventGraph"][{s1_,s2_}:>{StringJoin[s1,s2]},{{"A","B"}},2,"TokenDeduplication"->False]
Out[]=
In[]:=
ResourceFunction["TokenEventGraph"][{s1_,s2_}:>{StringJoin[s1,s2]},{{"A","B"}},2]
Out[]=
In[]:=
ResourceFunction["TokenEventGraph"][{s1_,s2_}:>{StringJoin[s1,s2],s1},{{"A","B"}},2]
Out[]=
In[]:=
ResourceFunction["TokenEventGraph"][{s1_,s2_,c_}:>{StringJoin[s1,s2],c},{{"A","B"}},2,AspectRatio->.3]
Out[]=
In[]:=
IntegerPartitions[8,{4}]
Out[]=
{{5,1,1,1},{4,2,1,1},{3,3,1,1},{3,2,2,1},{2,2,2,2}}
In[]:=
ResourceFunction["TokenEventGraph"][{s1_,s2_}:>{StringJoin[s1,s2]},{{"AA","BB"}},2]
Out[]=
MiddleHalf[s_]:=
"ABBABBAAA"
In[]:=
ResourceFunction["TokenEventGraph"][{s1_,s2_,c_}:>{StringJoin[s1,s2],c}/;c===StringJoin[StringTake[s1,-Round[StringLength[s1]/2]],StringTake[s2,Round[StringLength[s2]/2]]],{{"AA","BB"}},2,AspectRatio->.3]