grgroup={{1,0}{5,1},{1,1}{5,0},{2,0}{1,0},{2,1}{3,1},{3,0}{1,0},{3,1}{4,1},{4,0}{5,0},{4,1}{2,1},{5,0}{5,0},{5,1}{5,1}};
FAApply[rule_,s0_,list_]:=FoldList[{First[#1],#2}/.rule&,{s0},list]
FAStep[rule_,s0_,list_]:=Map[Last,Rest[FoldList[{First[#1],#2}/.rule&,{s0},list]]]
FAEvolveList[rule_,s0_,init_,t_]:=NestList[FAStep[rule,s0,#]&,init,t]
GFAEvolveList[rule_,seq_,init_]:=FoldList[FAStep[rule,#2,#]&,init,seq]
Show[RasterGraphics[FAEvolveList[grgroup,1,Table[0,{20}],20]]];
Show[RasterGraphics[GFAEvolveList[grgroup,Table[1,{20}],Table[0,{20}]]]];
A random word:
Show[RasterGraphics[GFAEvolveList[grgroup,Table[Random[Integer,{1,5}],{100}],Table[0,{20}]]]];
fa={{1,1}{1,0},{1,0}{2,1},{2,1}{2,1},{2,0}{1,0}};
Show[RasterGraphics[GFAEvolveList[fa,Table[Random[Integer,{1,2}],{100}],Table[0,{20}]]]];
ListPlot[{First[#],Length[#]}&/@Split[Sort[FromDigits[Reverse[#],2]&/@GFAEvolveList[grgroup,Table[Random[Integer,{1,5}],{10000}],Table[0,{50}]]]]];
ListPlot[FromDigits[Reverse[#],2]&/@GFAEvolveList[grgroup,Table[Random[Integer,{1,5}],{100}],Table[0,{50}]],PlotJoinedTrue];
ListPlot[FromDigits[Reverse[#],2]&/@GFAEvolveList[grgroup,Table[Random[Integer,{1,5}],{1000}],Table[0,{50}]],PlotJoinedTrue,PlotRangeAll];
ListPlot[FromDigits[Reverse[#],2]&/@GFAEvolveList[grgroup,Table[Random[Integer,{1,5}],{10000}],Table[0,{50}]],PlotJoinedTrue,PlotRangeAll];
Show[Graphics[Line[{{First[#],0},{First[#],Length[#]}}]&/@Split[Sort[FromDigits[Reverse[#],2]&/@GFAEvolveList[grgroup,Table[Random[Integer,{1,5}],{10000}],Table[0,{50}]]]],FrameTrue]];