OFFSET
0,4
COMMENTS
See A359303 for how the automaton steps.
The automaton state is a bi-infinite string of 1's and 0's of the form ...1111 middle 0000... and the right half here is the part which began as 0's.
The right half state is encoded in an integer by interpreting the bits from left to right as binary from least to most significant bit.
LINKS
Kevin Ryde, Table of n, a(n) for n = 0..3000
Kevin Ryde, PARI/GP Code
EXAMPLE
Following the state progression from A359303 (state(n)) is converted to the sequence (a(n)) by:
state(0) = ..1111|0000..
|0000..
a(0) = 0 = \---> bits 000..
state(1) = ..1110|1000..
|1000..
a(1) = 1 = \---> bits 100..
state(2) = ..111101|10000..
|10000..
a(2) = 1 = \---> bits 100..
state(3) = ..111101|01000..
|01000..
a(3) = 2 = \---> bits 01000..
state(4) = ..111011|01000..
a(4) = 2 = \---> bits 01000..
state(5) = ..111010|11000..
a(5) = 3 = \---> bits 11000..
MATHEMATICA
ClearAll[{s, prop, checkprop, doprop, p, a, j, runpos}];
prop[s_]:=(p=Array[0#&, Length[s]];
Do[If[i==1 ||i==Length[s], p[[i]]=0,
{p[[i-1]], p[[i]], p[[i+1]]}+=
Piecewise[{{{1, -1, 0}, {s[[i-1]], s[[i]], s[[i+1]]}=={0, 1, 1}},
{{0, -1, 1}, {s[[i-1]], s[[i]], s[[i+1]]}=={1, 1, 0}}}, {0, 0, 0}]], {i, 1, Length[s]-1} ];
Return[p])
checkprop[s_]:=(p=s;
Do[If[p[[i]]==2, {p[[i-1]], p[[i]], p[[i+1]]}={0, 0, 0}], {i, 2, Length[s]-1}];
Return[p])
doprop[s_]:= Return[s +checkprop[prop[s]]]
(* show only positive states: *)
runpos[n_]:=( s=Join[Array[#/#&, n+5], Array[0#&, n+5]] ; Table[Drop[Nest[doprop[#]&, s, k], n+5], {k, 0, n}])
(* conversion from the automaton states to integers *)
(* a[10] returns {0, 1, 1, 2, 2, 3, 4, 5, 5, 6, 9} *)
a[j_]:=Table[FromDigits[Reverse[runpos[j+1][[k, All]]], 2], {k, 1, j+1}]
PROG
(PARI) See links.
CROSSREFS
KEYWORD
nonn,base
AUTHOR
Raphael J. F. Berger, Jan 27 2023
STATUS
approved