Mentions légales du service

Skip to content
Snippets Groups Projects
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()