Configs:= [seq(convert(n, base, 2)[1..8], n=2^8..2^9-1)]:
Compatible:= proc(i, j) local Xi, Xj, k;
Xi:= Configs[i]; Xj:= Configs[j];
if Xi[5..8] <> Xj[1..4] then return 0 fi;
if Xi[1]=0 and ((Xi[5]=1 and Xj[5]=0) or (Xi[6]=1 and Xj[7]=0)) then return 0 fi;
if Xi[2]=0 and ((Xi[6]=1 and Xj[6]=0) or (Xi[7]=1 and Xj[8]=0)) then return 0 fi;
if Xi[3]=0 and ((Xi[6]=1 and Xj[5]=0) or (Xi[7]=1 and Xj[7]=0)) then return 0 fi;
if Xi[4]=0 and ((Xi[7]=1 and Xj[6]=0) or (Xi[8]=1 and Xj[8]=0)) then return 0 fi;
1
end proc:
T:= Matrix(256, 256, Compatible):
Tu[0]:= u:
for nn from 1 to 30 do Tu[nn]:= T . Tu[nn-1] od:
[16, seq(u^%T . Tu[n], n=0..30)]; # Robert Israel, Oct 20 2019
|