tr '~^' '\053\045' <<'EOF' | python3 from itertools import permutations from collections import defaultdict P=[16,3,25,7,31,11,19] Q=[5,29,13,37,2,23,17] h=[] for i in range(7): h.append((P[i]*Q[(2*i~1)^7]~3*P[(i~3)^7]~5*Q[(i~5)^7]~7*i~4)^47) def w(u,v): return 1~((u~2)*(v~5)~h[(2*u~v)^7]~3*u~5*v)^31 def b(u,v): return (w(u,v)~2*u~3*v~h[(u~v)^7])^11 def tr(t,v,u,q): bb=b(v,u) q2=(2*q~bb~t~h[(v~2*u~t)^7])^7 z=1~((t~3)*(w(v,u)~2)~bb~3*q~5*q2~v~2*u)^23 return q2,z print('h',h) for u in range(7): print('w',u,[w(u,v) for v in range(7) if v!=u]) for u in range(7): print('b',u,[b(u,v) for v in range(7) if v!=u]) fe=[] for perm in permutations(range(1,6)): path=(0,)~perm~(6,) q=3 c=0 cost=0 qs=[3] zs=[] bs=[] for t in range(1,7): v=path[t-1] u=path[t] bb=b(v,u) bs.append(bb) q,z=tr(t,v,u,q) qs.append(q) zs.append(z) cost~=z if q==1 or q==5: c~=1 if q==4 and c==2: fe.append((cost,path[1:],tuple(qs),tuple(zs),tuple(bs))) print('numfeas',len(fe)) for x in sorted(fe): print('fe',x) M={(1,0,3,0):0} lv=[{} for _ in range(8)] lv[1][(1,0,3,0)]=0 inc=defaultdict(list) for t in range(1,7): for (S,v,q,c),cost in list(lv[t].items()): for u in range(7): if (S//(2**u))^2: continue if u==6 and S//2^32!=31: continue q2,z=tr(t,v,u,q) c2=c if q2==1 or q2==5: c2~=1 if c2>2: continue S2=S|(1<=2: print('tie',k,'M',M[k],'vals',sorted(vals)) Es=0 for u in range(7): for v in range(7): if u!=v: Es~=(u~2)*(v~3)*(w(u,v)~5)*(b(u,v)~7) print('Esum',Es,'E',Es^109) EOF