|
MAPLE
|
good:=select(proc(t) local i, j; add(add(abs(t[i]-t[j]), j=i+1..4), i=1..3)=18 end proc, [seq(seq(seq(seq([a, b, c, d], a=0..6), b=0..6), c=0..6), d=0..6)]):
good2:= convert(map(t -> t[1..2], good), set):
configs:= select(t -> member([t[1][2], t[2][1]], good2),
{seq(seq([t1, t2], t1=good2), t2=good2)]:
N:= nops(configs):
T:= Matrix(N, N, proc(i, j) local k; if
{seq([op(configs[i][k..k+1]), op(configs[j][k..k+1])], k=1..3)} subset good then 1 else 0 fi end proc):
e:= Vector(N, 1):
u[0]:= e:
for i from 1 to 30 do
u[i]:= T . u[i-1]
od:
|