In[]:=
CAWithMemory[init_,t_,opts___]:=CellularAutomaton[​​{​​(*Rule30*)​​{1,1,1|2|3}->0,{1,1,0|2|3}->0,{1,0,1|2|3}->0,{1,0,0|2|3}->1,{0,1,1|2|3}->1,{0,1,0|2|3}->1,{0,0,1|2|3}->1,{0,0,0|2|3}->0,​​​​(*Walltoggle*)​​{0,2,_}:>2,​​{1,2,_}:>3,​​{0,3,_}:>3,​​{1,3,_}:>2,​​​​(*Memorycopy*)​​{2,_,_}:>4,​​{3,_,_}:>5,​​{x:2|3,y_,_}:>y,​​​​(*Eraser*)​​{_,6,_}->6,​​{6,_,0}->0,​​​​(*Memorymovement*)​​{x:4|5,_,_}:>x,​​​​(*Eraserboundary*)​​{_,x_,6}:>x​​},​​init,​​t​​]//​​ArrayPlot[#,opts,ColorRules->{​​(*Rule30'gas'*)​​0->White,1->Black,​​(*Wallstates*)​​2->Darker[Purple],3->Lighter[Purple],​​​​(*Memorystates*)​​4->Darker[Green],5->Lighter[Green],​​​​(*Eraser*)​​6->Red​​}]&
In[]:=
CAWithMemory[{{1,0,0,1,0,0,0,1,0,0,0,2,4,4,4,4,4,4,4,4,4,4,4,6},0},50]
Out[]=
In[]:=
CAWithMemory[{{1,0,0,1,0,0,0,1,0,0,0,2,4,4,4,4,4,4,4,4,4,4,4,6},0},13,Mesh->True]
Out[]=
In[]:=
CAWithMemory[{{0,0,0,1,0,0,0,3,5,5,5,5,5,5,5,5,5,6},0},13,Mesh->True]
Out[]=
In[]:=
CAWithMemory[{{0,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,6},0},13,Mesh->True]
Out[]=
In[]:=
CAWithMemory[{{0,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,6},0},20,Mesh->True]
Out[]=
In[]:=
CAWithMemory[{{0,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,5,5,5,5,6},0},20,Mesh->True]
Out[]=

Objective: having the RHS end up having runs of “black winning, white winning”

If the observer only senses a limited number of DOFs on the right, the rest will be “lost to radiation”

E.g. observer is sampling only a limited region of cells

Causal Graphs

E.g. R110 has an emergent causal graph structure

Neural Nets

[ Map out the attractor basins from all possible inputs to a simple neural net ]
Train through multiple layers for “nearest point” ... e.g. in 1D
i.e. Classify[ ,x] outputs the point nearest to x from some fixed set....