-
Nazim@misirlou authoredNazim@misirlou authored
enumerateEndo.py 1.22 KiB
import sys
NRULE=256
REFLECTION=[0,4,2,6,1,5,3,7]
CLIST=[]
seen= [[False]* NRULE]*NRULE
def mark(f,g):
if not seen[f][g] and f != g:
seen[f][g]= True
seen[g][f]= True
CLIST.append( (f,g))
def scanSpace():
for f in range(NRULE):
fft=transECA(f)
fr,fc,frc=fft[1], fft[2], fft[3]
print ("%d,%d %d,%d %d,%d"%(f, fr, f, fc, f, frc))
mark(f,fr) ; mark(f, fc) ; mark(f, frc)
def reflect(tab):
reflectedTab=[ tab[REFLECTION[i]] for i in range(8)]
return ''.join(reflectedTab)
def wcode(tab):
return int(tab[::-1],2)
def transECA(eca):
ftab= '{0:08b}'.format(eca)[::-1] # from decimal to binary, inverting order
rtab= reflect(ftab)
ctab= ''.join( [str(1-int(ftab[7-i])) for i in range(8)] )
rctab= reflect(ctab)
wr, wc, wrc = wcode(rtab), wcode(ctab), wcode(rctab)
#print(eca, wr, wc, wrc, ftab, rtab, ctab)
return (eca, wr, wc, wrc)
def exportList():
print("writing list")
filenameout= "list-endogamous.txt"
f=open(filenameout,"w")
for couple in CLIST:
f.write("%3d %3d\n"%(couple[0],couple[1]))
#transECA(213)
print('-'*20)
scanSpace()
print(CLIST)
print('-'*20)
print(len(CLIST))
exportList()