In[]:=
nColors=4;rule=28205372808335068075931797246668074159844190201450952924456556023576503542668514928543654617168587194001361173641932272673699301536583883982992772413078216157451600166665916314616030621838073353272107237739380102118277195092352790429765859458563982987144617788518149844367753864964613630668741907912930436822688396966087611550686395720958207857952580157473852983626179179972024285397002316270035784380777160447026365958467645891541415550322188647930073797131701317241216973546068878828885416174329546175169750050027880697818586502467794555837009529007382851777572115371000553160063635324193369114512231807472470619756;initState={3,1,1,0,3};
In[]:=
Module[{evo,positions,colPositions,colRanges,rowPositions,highlightPositions,initState=#1,pattern=#2,rule=#3,steps=#4},evo=CellularAutomaton[rule,{initState,0},steps];positions=SequencePosition[#,pattern]&/@evo;colPositions=Cases[positions,x_/;x!={},1];colRanges=Range@@#&/@#&/@colPositions;rowPositions=Position[positions,x_/;x!={},1];highlightPositions=Flatten[(row|->{First[First[row]],#}&/@#&/@Last[row])/@Transpose[{rowPositions,colRanges}],2];ArrayPlot[MapAt[#+nColors&,evo,highlightPositions],ColorRules->If[nColors==2,{0->White,1->Black,2->Lighter[Pink],3->Pink},{0->GrayLevel[1],1->GrayLevel[2/3],2->GrayLevel[1/3],3->GrayLevel[0],4->Lighter[Pink,2/3],5->Lighter[Pink,1/3],6->Lighter[Pink],7->Pink}]]]&[initState,initState,{rule,nColors,2},10]
Out[]=