Tp=Subsets(range(7),k=3).list()
W=[(tuple(sorted(x)),) for x in Tp]
for i in range(5):
W.remove(((i,i+1,i+2),))
W.remove(((0,5,6),))
W.remove(((0,1,6),))
def addm(a,u):
return tuple(sorted([(a[0 ]+u)%7 ,(a[1 ]+u)%7 ,(a[2 ]+u)%7] ))
def miss(u):
for i in range(7):
if i not in u[0] and i not in u[1]:
return i
v=((1,3,5),(0,2,4))
V=[(addm(v[0],i),addm(v[1],i)) for i in range(7)]
u=((0,2,4),(1,3,5))
U=[ (addm(u[0],i),addm(u[1],i))
for i in range(7) ]
T=W+U+V
cu=((0,1,3),(2,4,5),(1,4,5), (2,3,6), (0,1,4), (1,4,6), (0,4,6), (1,5,6),
(0,4,5),(0,1,5),(2,3,5),(0,2,3))
cv=((0,3,5),(3,5,6),(0,4,5),(1,2,5),(0,2,6),(1,2,4),(0,2,5),(0,1,5),(1,3,4),
(0,3,4))
def compshort(x,y):
if x==y:
return False
xprime=[i for i in x if i not in y]
yprime=[i for i in y if i not in x]
m=min(xprime)
M=max(xprime)
n=min(yprime)
N=max(yprime)
if m<n:
if min([i for i in xprime if i>n]+[8])<N:
return False
if n<m:
if min([i for i in yprime if i>m]+[8])<M:
return False
return True
def comp(x,y):
if len(x)==len(y)==1:
return compshort(x[0],y[0])
if len(x)==len(y)==2:
if x in U and y==(x[0],addm(x[1],-2)):
return true
if x in U and y==(addm(x[0],2),x[1]):
return true
if x in U and y==(addm(x[0],2),addm(x[1],2)):
return true
if x in U and y==(addm(x[0],-2),addm(x[1],-2)):
return true
if x in V and y==(x[0],addm(x[1],2)):
return true
if x in V and y==(addm(x[0],-2),x[1]):
return true
return false
if len(x)==2 and len(y)==1:
if x in U:
d=miss(x)
if addm(y[0],-d-1) in cu:
return true
if x in V:
d=miss(x)
if addm(y[0],-d-1) in cv:
return true
return false
if len(y)==2 and len(x)==1:
if y in U:
d=miss(y)
if addm(x[0],-d-1) in cu:
return true
if y in V:
d=miss(y)
if addm(x[0],-d-1) in cv:
return true
return false
G=Graph([T,comp])
D=G.clique_complex()
def adj(x,y):
return len([i for i in x if i in y])==5
H=Graph([[x.tuple() for x in D.facets()],adj])