numedge=二项式(2^n,2);lowercolor=移位(1,numedge-1);uppercolor=位负(0,numedge)-移位(1,numege-6);最大值=移位(31,numedge-5);计数=0;偏移=(n>2);如果(n<=1,0,
边=向量(n,b,A=列表();forvec(a=向量(2*0^(b-1)+2,i,[1,2^if(b-1,b,n)]),列表输入(a,a),2);Vec(A));
e=matconcat(vecsort(apply(cvert->vecsort)(apply)(cedge->for(d=2,n,if(vecsearch(edges[d],cedge),return(vecs搜索(edges[d]、cedge,-1)),vecsearch(edges[d+1],cedge)&&vecsearch(edge[d+1,cedge)<=#edges[0d],returne(vecsearch[edges[1],edges[Pd],vecsearch(edgex[d+1)])]))-1)))),应用(边->向量提取(cvert,边),边[2])),select(顶点->(matrank(矩阵(n,#vertex-1,q,p,bittest(顶点[p]-1,q-1)-bitest(顶点[#vertex]-1,q-1)))<=2),边[1]),4)~);
edgebits=矩阵(6,#e[,1]-偏移量,q,p,e[p+偏移量,q]);共面=#edgebits[1,];checker=向量(共面,i,和(b=1,6,移位(1,边比特[b,i]));
对于步骤(着色=上色,下色,-1,对于(m=1,共面,如果(位和(checker[m],着色)==checker[m],计数=计数+移位(2,边比特[1,m]));coloring=着色-位负(0,边比特[1,m]);break(),位和(checker[m],着色),计数=计数+移位(2,边比特[1,m]);coloring=着色-位负(0,边比特[1,m]);break()));最大值计数)}
|