In[]:=
ArrayPlot[CellularAutomaton[{3818409,{3,{3,1,3}},1},RandomInteger[2,800],799]/.{0->Black,1->White,2->Blue},ImageSize->800]
Out[]=
Selector
Selector
In[]:=
RandomReversibleBCARule[]:=MapThread[Rule,{Tuples[{0,1,2},2],RandomSample[Tuples[{0,1,2},2]]}]
In[]:=
blocks=GatherBy[GatherBy[RandomSample[Tuples[{0,1,2},2]],Union@{#,Reverse[#]}&],Length];
In[]:=
SymmetricReversibleRule[code_,perm1_,perm2_]:=Join[MapThread[Rule,{Catenate[First[blocks]],Catenate[MapThread[Part[#1,#2]&,{First[blocks],RotateRight[{1,2},#]&/@code}][[perm1]]]}],MapThread[Rule,{Catenate[Last[blocks]],Catenate[Last[blocks]][[perm2]]}]]
In[]:=
ruleSet=Flatten[Outer[SymmetricReversibleRule[#1,#2,#3]&,Tuples[{1,0},3],Permutations[Range[3]],Permutations[Range[3]],1],2];
In[]:=
Length[ruleSet]
Out[]=
288
In[]:=
ResourceFunction["InteractiveListSelector"][ArrayPlot[ResourceFunction["BlockCellularAutomaton"][#,RandomChoice[{.95,.05,.05}->{0,1,2},100],100],ColorRules->{0->White,1->Lighter[Orange],2->Darker[Orange]}]&,ruleSet]
Out[]=
Radiating
Radiating
Block reversible continuous CAs
Block reversible continuous CAs
Reversible map of the interval to itself
For a continuous function, there can be no stationary points