def splitGens(gen1,gen2,trans1,trans2,ellDir,g1Path,g2Acc,bigon):##g2Acc contains a point of bigon (the one of g2) newEllDir=deepcopy(ellDir) newEllDirp=deepcopy(ellDir) holes=findHoles(gen1,gen2,trans1,trans2,ellDir,bigon) isH=[0]*len(gen1.perm) coPath=gen2.perm[:] coPath[bigon[0][0]]=bigon[0][1] for h in holes: tmp=2 if isIn(coPath,g1Path,h[0],gen1.perm[h[0]]): tmp=1 for x in h[1]: isH[x]=tmp g1=gen1 g2=gen([],[],[],0) g1p=gen([],[],[],0) g2p=gen2 for i in xrange(len(gen1.perm)): tmp1=g1Path[i] tmp2=g2Acc[i] if tmp2: g2.perm.append(tmp2[1]) g2.xShift.append(tmp2[2]) g2.yShift.append(tmp2[3]) g1p.perm.append(tmp2[1]) if bigon[1][0]==0 and i==bigon[1][1] or bigon[1][0]==1 and tmp2[1]==bigon[1][1]:###unfinished g1p.xShift.append(tmp2[2]*(bigon[1][0]*2-1)) g1p.yShift.append(tmp2[3]*(1-bigon[1][0]*2)) else: g1p.xShift.append(tmp2[2]) g1p.yShift.append(tmp2[3]) else: if isH[i]==2 or isH[i]==0 and not tmp1: gg=gen1 if newEllDir[0][i]!=0: newEllDir[0][i]=1 if newEllDir[1][gen1.perm[i]]!=0: newEllDir[1][gen1.perm[i]]=1 else: gg=gen2 if newEllDirp[0][i]!=0: newEllDirp[0][i]=1 if newEllDirp[1][gen2.perm[i]]!=0: newEllDirp[1][gen2.perm[i]]=1 g2.perm.append(gg.perm[i]) g2.xShift.append(gg.xShift[i]) g2.yShift.append(gg.yShift[i]) g1p.perm.append(gg.perm[i]) g1p.xShift.append(gg.xShift[i]) g1p.yShift.append(gg.yShift[i]) ## g1.show() ## g2.show() ## g1p.show() ## g2p.show() ## print "fin" return ((g1,g2,newEllDir),(g1p,g2p,newEllDirp))
def splitGens(gen1, gen2, trans1, trans2, ellDir, g1Path, g2Acc, bigon): # g2Acc contains a point of bigon (the one of g2) newEllDir = deepcopy(ellDir) newEllDirp = deepcopy(ellDir) holes = findHoles(gen1, gen2, trans1, trans2, ellDir, bigon) isH = [0] * len(gen1.perm) coPath = gen2.perm[:] coPath[bigon[0][0]] = bigon[0][1] for h in holes: tmp = 2 if isIn(coPath, g1Path, h[0], gen1.perm[h[0]]): tmp = 1 for x in h[1]: isH[x] = tmp g1 = gen1 g2 = gen([], [], [], 0) g1p = gen([], [], [], 0) g2p = gen2 for i in range(len(gen1.perm)): tmp1 = g1Path[i] tmp2 = g2Acc[i] if tmp2: g2.perm.append(tmp2[1]) g2.xShift.append(tmp2[2]) g2.yShift.append(tmp2[3]) g1p.perm.append(tmp2[1]) if bigon[1][0] == 0 and i == bigon[1][1] or bigon[1][ 0] == 1 and tmp2[1] == bigon[1][1]: # unfinished g1p.xShift.append(tmp2[2] * (bigon[1][0] * 2 - 1)) g1p.yShift.append(tmp2[3] * (1 - bigon[1][0] * 2)) else: g1p.xShift.append(tmp2[2]) g1p.yShift.append(tmp2[3]) else: if isH[i] == 2 or isH[i] == 0 and not tmp1: gg = gen1 if newEllDir[0][i] != 0: newEllDir[0][i] = 1 if newEllDir[1][gen1.perm[i]] != 0: newEllDir[1][gen1.perm[i]] = 1 else: gg = gen2 if newEllDirp[0][i] != 0: newEllDirp[0][i] = 1 if newEllDirp[1][gen2.perm[i]] != 0: newEllDirp[1][gen2.perm[i]] = 1 g2.perm.append(gg.perm[i]) g2.xShift.append(gg.xShift[i]) g2.yShift.append(gg.yShift[i]) g1p.perm.append(gg.perm[i]) g1p.xShift.append(gg.xShift[i]) g1p.yShift.append(gg.yShift[i]) return ((g1, g2, newEllDir), (g1p, g2p, newEllDirp))
## print "inter" inter=findAllInter(ell) ## print inter print "cuts" print findCuts(obtuse,flats,rect,gen1,gen2,ell,ellDir,trans1,trans2,inter) frm=show_all.floerDiagram((rect,ell,[gen1,gen2])) frm.Show() return 0 ##debug app.MainLoop() print totalG ##end debug if __name__ == "__main__": ## from genGen import gen ## import wx ## import show_all ## app=wx.PySimpleApp() ## g1=gen([-1, 2, 0, 3, 4, 5], [0, 1, 1, 1, -1, -1], [0, 1, 1, -1, -1, -1],0) ## g2=gen([-1, 2, 3, 0, 4, 5], [0, 1, 1, 1, -1, -1], [0, 1, -1, 1, -1, -1],0) ## data=([[1,3],[2,5],[0,4],[0,3],[2,4],[1,5]],([[1,3],[2,5],[0,4],[0,3],[2,4],[1,5]],[[0,5]]*6),[g1,g2]) ## frm=show_all.floerDiagram(data) ## frm.Show() ## app.MainLoop() gen1=gen([1, 0, 4, 2, 5, 6, 8, 7, -1], [-1, -1, 1, 1, -1, 1, -1, -1, 0], [1, 1, -1, 1, -1, 1, -1, -1, 0],0) gen2=gen([6, 1, 4, 0, 2, 7, 8, 5, -1], [-1, -1, 1, 1, -1, 1, -1, -1, 0], [-1, 1, -1, 1, 1, -1, -1, 1, 0],0) rect=[[1, 6], [0, 2], [1, 4], [0, 3], [2, 5], [4, 7], [6, 8], [5, 7], [3, 8]] ell=([[1, 6], [0, 2], [1, 4], [0, 3], [2, 5], [4, 7], [6, 8], [5, 7], -1], [[1, 3], [0, 2], [1, 4], -1, [2, 5], [4, 7], [0, 6], [5, 7], [6, 8]]) ellDir=([1, -1, -1, -1, -1, -1, 1, -1, 0], [1, -1, -1, 0, 1, -1, -1, -1, 1]) print deepBdMap(rect,gen1,gen2,ell,ellDir)
def copyGen(g): return gen(g.perm[:],g.xShift[:],g.yShift[:],0)
tmp=deepBdMapRec(g[0],genGoal,depth-1,init,immobile,1-upDown,g[1],hmap) if tmp==0: hmap[ttt]=g[1] parity+=tmp global debug debug[parity]+=1 return parity def initWith(rect,ell): tr=[[] for i in xrange(len(rect))] for i,p in enumerate(rect): tr[p[0]].append(i) tr[p[1]].append(i) return (listPossRectMp(rect,ell),rect,tr) ##0 in init is possRect#1 in init is transposed rect if __name__ == "__main__": data=([[2, 6], [1, 5], [4, 7], [2, 9], [0, 3], [1, 6], [0, 4], [3, 8], [7, 9], [5, 8]], ([[2, 6], [1, 5], [4, 7], -1, [0, 3], [1, 6], [0, 4], [3, 8], [7, 9], [5, 8]], [[4, 6], [1, 5], [0, 3], [4, 7], [2, 6], [1, 9], [0, 5], [2, 8], [7, 9], -1]), [gen([6, 2, 4, -1, 0, 1, 3, 8, 7, 5],[-1, -1, -1, 0, 1, 1, -1, 1, -1, -1],[-1, -1, 1, 0, 1, 1, -1, -1, 1, 1],0), gen([6, 2, 4, -1, 1, 3, 0, 8, 7, 5],[-1, -1, -1, 0, 1, 1, -1, 1, -1, -1],[-1, -1, 1, 0, -1, -1, 1, -1, 1, 1],0)]) init=initWith(data[0],data[1]) ## print findAge(gen1,rect,init[2]) gen1=data[2][0] gen2=data[2][1] immo=[1,1,1,1,0,0,0,1,1,1] ## for j in listRect(gen1,init[0]):j[0].show() ## deepBdMapRec(gen1,gen1,19,init) ## import profile ## profile.run("tmp=deepBdMapRec(gen1,gen2,99,init,immo)") tmp=deepBdMapRec(gen1,gen2,99,init,immo) print tmp
def copyGen(g): return gen(g.perm[:], g.xShift[:], g.yShift[:], 0)
tr[p[0]].append(i) tr[p[1]].append(i) return (listPossRectMp(rect, ell), rect, tr) # 0 in init is possRect # 1 in init is transposed rect if __name__ == "__main__": data = ([[2, 6], [1, 5], [4, 7], [2, 9], [0, 3], [1, 6], [0, 4], [3, 8], [7, 9], [5, 8]], ([[2, 6], [1, 5], [4, 7], -1, [0, 3], [1, 6], [0, 4], [3, 8], [7, 9], [5, 8]], [[4, 6], [1, 5], [0, 3], [4, 7], [2, 6], [1, 9], [0, 5], [2, 8], [7, 9], -1]), [ gen([6, 2, 4, -1, 0, 1, 3, 8, 7, 5], [-1, -1, -1, 0, 1, 1, -1, 1, -1, -1], [-1, -1, 1, 0, 1, 1, -1, -1, 1, 1], 0), gen([6, 2, 4, -1, 1, 3, 0, 8, 7, 5], [-1, -1, -1, 0, 1, 1, -1, 1, -1, -1], [-1, -1, 1, 0, -1, -1, 1, -1, 1, 1], 0) ]) init = initWith(data[0], data[1]) # print(findAge(gen1, rect, init[2])) gen1 = data[2][0] gen2 = data[2][1] immo = [1, 1, 1, 1, 0, 0, 0, 1, 1, 1] # for j in listRect(gen1, init[0]):j[0].show() # deepBdMapRec(gen1, gen1, 19, init) tmp = deepBdMapRec(gen1, gen2, 99, init, immo) print(tmp)
frm = show_all.floerDiagram((rect, ell, [gen1, gen2])) frm.Show() return 0 # debug app.MainLoop() print(totalG) # end debug if __name__ == "__main__": # app=wx.PySimpleApp() # g1=gen([-1, 2, 0, 3, 4, 5], [0, 1, 1, 1, -1, -1], [0, 1, 1, -1, -1, -1], 0) # g2=gen([-1, 2, 3, 0, 4, 5], [0, 1, 1, 1, -1, -1], [0, 1, -1, 1, -1, -1], 0) # data=([[1, 3], [2, 5], [0, 4], [0, 3], [2, 4], [1, 5]], ([[1, 3], [2, 5], [0, 4], [0, 3], [2, 4], [1, 5]], [[0, 5]]*6), [g1, g2]) # frm=show_all.floerDiagram(data) # frm.Show() # app.MainLoop() gen1 = gen([1, 0, 4, 2, 5, 6, 8, 7, -1], [-1, -1, 1, 1, -1, 1, -1, -1, 0], [1, 1, -1, 1, -1, 1, -1, -1, 0], 0) gen2 = gen([6, 1, 4, 0, 2, 7, 8, 5, -1], [-1, -1, 1, 1, -1, 1, -1, -1, 0], [-1, 1, -1, 1, 1, -1, -1, 1, 0], 0) rect = [[1, 6], [0, 2], [1, 4], [0, 3], [2, 5], [4, 7], [6, 8], [5, 7], [3, 8]] ell = ([[1, 6], [0, 2], [1, 4], [0, 3], [2, 5], [4, 7], [6, 8], [5, 7], -1], [[1, 3], [0, 2], [1, 4], -1, [2, 5], [4, 7], [0, 6], [5, 7], [6, 8]]) ellDir = ([1, -1, -1, -1, -1, -1, 1, -1, 0], [1, -1, -1, 0, 1, -1, -1, -1, 1]) print(deepBdMap(rect, gen1, gen2, ell, ellDir))