|
MATHEMATICA
|
ClearAll[{s, prop, checkprop, doprop, run, p, a, j, runneg}];
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]]]
runneg[n_]:=( s=Join[Array[#/#&, n+5], Array[0#&, n+5]] ; Table[Drop[Nest[doprop[#]&, s, k], -(n+5)], {k, 0, n}])
a[j_]:=FromDigits[(runneg[j+1]/.{0->1, 1->0})[[j+1, All]], 2]
(* Table[a[n], {n, 0, 10, 1}] *)
(* returns the first 11 elements *)
(* {0, 1, 2, 2, 4, 5, 8, 9, 10, 17, 18} *)
|