标签:mod make efi position vector sort tin sprintf too
gap> calT(27);
4
1~4:G27_1=C27,N0=1,2,6,18,
5~24:G27_2=C9 x C3,N0=1,8,18,0,
25~59:G27_5=C3 x C3 x C3,N0=1,26,0,0,
D:\MathTool\gaptool>Rppp
Rppp(1,2)=R8_1,Rppp(1,3)=R27_1
Rppp(2,2)=R8_2,Rppp(2,3)=R27_2
Rppp(3,2)=R8_3,Rppp(3,3)=R27_3
Rppp(4,2)=R8_4,Rppp(4,3)=R27_4
Rppp(5,2)=R8_5,Rppp(5,3)=R27_5
Rppp(8,2)=R8_8,Rppp(8,3)=R27_8
Rppp(10,2)=R8_10,Rppp(10,3)=R27_10
Rppp(11,2)=R8_11,Rppp(11,3)=R27_11
Rppp(13,2)=R8_13,Rppp(13,3)=R27_13
Rppp(15,2)=R8_15,Rppp(15,3)=R27_15
Rppp(16,2)=R8_16,Rppp(16,3)=R27_16
Rppp(19,2)=R8_19,Rppp(19,3)=R27_19
Rppp(20,2)=R8_20,Rppp(20,3)=R27_20
Rppp(21,2)=R8_21,Rppp(21,3)=R27_21
Rppp(23,2)=R8_23,Rppp(23,3)=R27_23
Rppp(24,2)=R8_24,Rppp(24,3)=R27_24
Rppp(25,2)=R8_25,Rppp(25,3)=R27_25
Rppp(26,2)=R8_26,Rppp(26,3)=R27_26
Rppp(28,2)=R8_28,Rppp(28,3)=R27_28
Rppp(29,2)=R8_29,Rppp(29,3)=R27_49
Rppp(30,2)=R8_30,Rppp(30,3)=R27_30
Rppp(33,2)=R8_33,Rppp(33,3)=R27_33
Rppp(34,2)=R8_34,Rppp(34,3)=R27_49
Rppp(37,2)=R8_37,Rppp(37,3)=R27_37
Rppp(38,2)=R8_38,Rppp(38,3)=R27_38
Rppp(41,2)=R8_41,Rppp(41,3)=R27_41
Rppp(43,2)=R8_43,Rppp(43,3)=R27_43
Rppp(44,2)=R8_44,Rppp(44,3)=R27_44
Rppp(45,2)=R8_45,Rppp(45,3)=R27_49
Rppp(46,2)=R8_46,Rppp(46,3)=R27_48
Rppp(47,2)=R8_47,Rppp(47,3)=R27_47
Rppp(48,2)=R8_48,Rppp(48,3)=R27_48
Rppp(49,2)=R8_49,Rppp(49,3)=R27_49
Rppp(50,2)=R8_50,Rppp(50,3)=R27_50
Rppp(51,2)=R8_51,Rppp(51,3)=R27_51
D:\MathTool\gaptool>Rppp
R8_1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,2,4],8,1,0,8,1,7,7,64,7,8,[1,1,2,4],[]
I1I2=[[1,1,1],[2,1,1],[4,1,2]],[[2,1,1],[4,1,5]]
R27_1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,2,6,18],27,1,0,27,1,26,26,729,26,27,[1,2,6,18],[]
I1I2=[[1,1,1],[3,1,2],[9,1,6]],[[3,1,3],[9,1,33]]
R8_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,2,4],8,1,0,8,1,3,3,32,7,8,[1,1,2,4],[[4,8,8],[8,4,8],[8,8,16]]
I1I2=[[1,1,1],[2,1,1],[4,1,2]],[[2,1,1],[4,1,5]]
R27_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,2,6,18],27,1,0,27,1,8,8,189,26,27,[1,2,6,18],[[9,27,108],[27,9,108],[27,27,324]]
I1I2=[[1,1,1],[3,1,2],[9,1,6]],[[3,1,3],[9,1,33]]
R8_3:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,2,4],8,1,1,4,2,1,3,20,3,8,[1,1,2,4],[[2,8,4],[4,4,4],[4,8,8],[8,2,4],[8,4,8],[8,8,16]]
I1I2=[[1,1,1],[2,1,1],[4,2,2]],[[2,1,1],[4,2,5]]
R27_3:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,2,6,18],27,1,1,9,2,2,8,81,8,27,[1,2,6,18],[[3,27,36],[9,9,36],[9,27,108],[27,3,36],[27,9,108],[27,27,324]]
I1I2=[[1,1,1],[3,1,2],[9,3,6]],[[3,1,3],[9,3,33]]
R8_4:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,2,4],8,1,0,8,1,3,7,48,7,8,[1,1,2,4],[[8,8,16]]
I1I2=[[1,1,1],[2,1,1],[4,1,2]],[[2,1,1],[4,1,5]]
R27_4:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,2,6,18],27,1,0,27,1,8,26,405,26,27,[1,2,6,18],[[27,27,324]]
I1I2=[[1,1,1],[3,1,2],[9,1,6]],[[3,1,3],[9,1,33]]
R8_5:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,1,7,7,64,7,8,[1,3,4,0],[]
I1I2=[[1,1,1],[2,1,3],[4,1,4]],[[2,1,3],[4,1,10],[4,4,3]]
R27_5:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,1,0,27,1,26,26,729,26,27,[1,8,18,0],[]
I1I2=[[1,1,1],[3,1,8],[9,1,18]],[[3,1,12],[9,1,99],[9,4,24]]
R8_8:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,0,0,8,1,5,7,48,7,2,[1,3,4,0],[[2,4,8],[4,4,8]]
I1I2=[[1,1,1],[2,1,3],[4,1,2],[4,2,2]],[[2,1,3],[4,1,5],[4,2,5],[4,4,3]]
R27_8:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,0,0,27,1,14,26,405,26,3,[1,8,18,0],[[3,9,108],[9,9,216]]
I1I2=[[1,1,1],[3,1,8],[9,1,6],[9,3,12]],[[3,1,12],[9,1,33],[9,3,66],[9,4,24]]
R8_10:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,0,0,8,1,5,7,48,7,2,[1,3,4,0],[[4,2,8],[4,4,8]]
I1I2=[[1,1,1],[2,1,3],[4,1,2],[4,2,2]],[[2,1,3],[4,1,5],[4,2,5],[4,4,3]]
R27_10:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,0,0,27,1,14,26,405,26,3,[1,8,18,0],[[9,3,108],[9,9,216]]
I1I2=[[1,1,1],[3,1,8],[9,1,6],[9,3,12]],[[3,1,12],[9,1,33],[9,3,66],[9,4,24]]
R8_11:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,1,7,7,40,7,8,[1,3,4,0],[[2,4,8],[4,2,8],[4,4,8]]
I1I2=[[1,1,1],[2,1,3],[4,1,4]],[[2,1,3],[4,1,10],[4,4,3]]
R27_11:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,1,0,27,1,14,26,297,26,27,[1,8,18,0],[[3,9,108],[9,3,108],[9,9,216]]
I1I2=[[1,1,1],[3,1,8],[9,1,6],[9,3,12]],[[3,1,12],[9,1,33],[9,3,66],[9,4,24]]
R8_13:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,2,3,3,32,7,8,[1,3,2,2],[[2,4,8],[4,2,8],[4,4,16]]
I1I2=[[1,1,1],[2,1,3],[4,3,2]],[[2,1,3],[4,3,5],[4,4,3]]
R27_13:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,1,0,27,2,8,8,189,26,27,[1,8,6,12],[[3,9,108],[9,3,108],[9,9,324]]
I1I2=[[1,1,1],[3,1,8],[9,2,6]],[[3,1,12],[9,2,33],[9,4,24]]
R8_15:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,0,0,8,3,3,3,28,7,2,[1,3,4,0],[[2,4,12],[4,2,8],[4,4,16]]
I1I2=[[1,1,1],[2,1,3],[4,3,4]],[[2,1,3],[4,3,10],[4,4,3]]
R27_15:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,0,0,27,4,8,8,153,26,3,[1,8,18,0],[[3,9,144],[9,3,108],[9,9,324]]
I1I2=[[1,1,1],[3,1,8],[9,2,18]],[[3,1,12],[9,2,99],[9,4,24]]
R8_16:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,1,3,7,48,7,8,[1,3,4,0],[[4,4,16]]
I1I2=[[1,1,1],[2,1,3],[4,2,4]],[[2,1,3],[4,2,10],[4,4,3]]
R27_16:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,1,0,27,1,8,26,405,26,27,[1,8,18,0],[[9,9,324]]
I1I2=[[1,1,1],[3,1,8],[9,3,18]],[[3,1,12],[9,3,99],[9,4,24]]
R8_19:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,1,3,7,40,7,8,[1,3,4,0],[[2,4,8],[4,2,8],[4,4,8]]
I1I2=[[1,1,1],[2,1,3],[4,2,4]],[[2,1,3],[4,2,10],[4,4,3]]
R27_19:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,0,0,27,1,8,26,297,26,3,[1,8,18,0],[[3,9,108],[9,3,108],[9,9,216]]
I1I2=[[1,1,1],[3,1,8],[9,3,18]],[[3,1,12],[9,3,99],[9,4,24]]
R8_20:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,0,0,8,3,3,3,28,3,2,[1,3,4,0],[[2,4,8],[4,2,12],[4,4,16]]
I1I2=[[1,1,1],[2,1,3],[4,3,4]],[[2,1,3],[4,3,10],[4,4,3]]
R27_20:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,0,0,27,4,8,8,153,8,3,[1,8,18,0],[[3,9,108],[9,3,144],[9,9,324]]
I1I2=[[1,1,1],[3,1,8],[9,2,18]],[[3,1,12],[9,2,99],[9,4,24]]
R8_21:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,1,4,2,3,3,24,3,8,[1,3,2,2],[[2,4,12],[4,2,12],[4,4,16]]
I1I2=[[1,1,1],[2,1,3],[4,3,2]],[[2,1,3],[4,3,5],[4,4,3]]
R27_21:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,1,1,9,2,8,8,117,8,27,[1,8,6,12],[[3,9,144],[9,3,144],[9,9,324]]
I1I2=[[1,1,1],[3,1,8],[9,2,6]],[[3,1,12],[9,2,33],[9,4,24]]
R8_23:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,1,3,7,48,7,8,[1,3,0,4],[[4,4,16]]
I1I2=[[1,1,1],[2,1,3]],[[2,1,3],[4,4,3]]
R27_23:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,1,0,27,1,8,26,405,26,27,[1,8,0,18],[[9,9,324]]
I1I2=[[1,1,1],[3,1,8]],[[3,1,12],[9,4,24]]
R8_24:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,1,3,3,32,7,8,[1,3,0,4],[[2,4,8],[4,2,8],[4,4,16]]
I1I2=[[1,1,1],[2,1,3]],[[2,1,3],[4,4,3]]
R27_24:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,18,0],9,1,0,27,1,8,8,189,26,27,[1,8,0,18],[[3,9,108],[9,3,108],[9,9,324]]
I1I2=[[1,1,1],[3,1,8]],[[3,1,12],[9,4,24]]
R8_25:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,0,8,1,7,7,64,7,8,[1,7,0,0],[]
I1I2=[[1,1,1],[2,1,7]],[[2,1,7],[4,4,21]]
R27_25:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,1,0,27,1,26,26,729,26,27,[1,26,0,0],[]
I1I2=[[1,1,1],[3,1,26]],[[3,1,39],[9,4,312]]
R8_26:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,0,8,1,3,7,48,7,8,[1,3,4,0],[[2,2,16]]
I1I2=[[1,1,1],[2,1,3],[4,5,4]],[[2,1,3],[4,4,3],[4,5,10]]
R27_26:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,4,8,8,297,26,3,[1,14,12,0],[[3,3,432]]
I1I2=[[1,1,1],[3,1,8],[3,2,6],[9,6,12]],[[3,1,12],[3,2,9],[9,4,24],[9,6,90],[9,7,24]]
R8_28:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,1,5,7,48,7,2,[1,5,2,0],[[2,2,16]]
I1I2=[[1,1,1],[2,1,5],[4,5,2]],[[2,1,5],[4,4,6],[4,5,5]]
R27_28:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,4,8,8,297,26,3,[1,14,12,0],[[3,3,432]]
I1I2=[[1,1,1],[3,1,8],[3,2,6],[9,6,12]],[[3,1,12],[3,2,9],[9,4,24],[9,6,90],[9,8,24]]
R8_29:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,3,3,3,40,7,2,[1,5,2,0],[[2,2,24]]
I1I2=[[1,1,1],[2,1,3],[2,2,2],[4,6,2]],[[2,1,3],[2,2,2],[4,4,3],[4,6,8],[4,7,3]]
R27_49:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,1,15,8,2,2,129,14,3,[1,16,10,0],[[3,3,600]]
I1I2=[[1,1,1],[3,1,2],[3,2,14],[9,9,4],[9,10,6]],[[3,1,3],[3,2,21],[9,7,24],[9,8,24],[9,9,30],[9,10,81]]
R8_30:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,5,3,3,36,3,1,[1,7,0,0],[[2,2,28]]
I1I2=[[1,1,1],[2,1,3],[2,2,4]],[[2,1,3],[2,2,4],[4,4,3],[4,7,18]]
R27_30:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,10,8,8,261,8,1,[1,26,0,0],[[3,3,468]]
I1I2=[[1,1,1],[3,1,8],[3,2,18]],[[3,1,12],[3,2,27],[9,4,24],[9,7,288]]
R8_33:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,0,8,1,3,3,32,7,8,[1,3,0,4],[[2,2,32]]
I1I2=[[1,1,1],[2,1,3]],[[2,1,3],[4,4,3]]
R27_33:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,1,0,27,2,2,8,225,26,27,[1,4,10,12],[[3,3,504]]
I1I2=[[1,1,1],[3,1,2],[3,2,2],[9,5,6],[9,6,4]],[[3,1,3],[3,2,3],[9,5,33],[9,6,30]]
R8_34:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,3,3,3,40,7,2,[1,5,2,0],[[2,2,24]]
I1I2=[[1,1,1],[2,1,3],[2,2,2],[4,6,2]],[[2,1,3],[2,2,2],[4,4,3],[4,6,8],[4,8,3]]
R27_49:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,1,15,8,2,2,129,14,3,[1,16,10,0],[[3,3,600]]
I1I2=[[1,1,1],[3,1,2],[3,2,14],[9,9,4],[9,10,6]],[[3,1,3],[3,2,21],[9,7,24],[9,8,24],[9,9,30],[9,10,81]]
R8_37:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,3,3,3,28,3,2,[1,5,2,0],[[2,2,36]]
I1I2=[[1,1,1],[2,1,3],[2,2,2],[4,9,2]],[[2,1,3],[2,2,2],[4,4,3],[4,7,3],[4,9,8]]
R27_37:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,4,8,8,153,8,3,[1,14,12,0],[[3,3,576]]
I1I2=[[1,1,1],[3,1,8],[3,2,6],[9,9,12]],[[3,1,12],[3,2,9],[9,4,24],[9,7,24],[9,9,90]]
R8_38:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,0,8,2,1,3,36,7,8,[1,2,3,2],[[2,2,28]]
I1I2=[[1,1,1],[2,1,1],[2,2,1],[4,5,2],[4,6,1]],[[2,1,1],[2,2,1],[4,5,5],[4,6,4]]
R27_38:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,1,0,27,4,2,2,225,26,27,[1,8,14,4],[[3,3,504]]
I1I2=[[1,1,1],[3,1,2],[3,2,6],[9,6,12],[9,10,2]],[[3,1,3],[3,2,9],[9,6,90],[9,10,27]]
R8_41:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,6,1,1,30,5,2,[1,6,1,0],[[2,2,34]]
I1I2=[[1,1,1],[2,1,1],[2,2,5],[4,6,1]],[[2,1,1],[2,2,5],[4,6,4],[4,7,6],[4,10,6]]
R27_41:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,8,2,2,165,14,3,[1,16,10,0],[[3,3,564]]
I1I2=[[1,1,1],[3,1,2],[3,2,14],[9,6,4],[9,10,6]],[[3,1,3],[3,2,21],[9,6,30],[9,7,48],[9,10,81]]
R8_43:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,5,3,3,36,7,1,[1,7,0,0],[[2,2,28]]
I1I2=[[1,1,1],[2,1,3],[2,2,4]],[[2,1,3],[2,2,4],[4,4,3],[4,8,18]]
R27_43:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,10,8,8,261,26,1,[1,26,0,0],[[3,3,468]]
I1I2=[[1,1,1],[3,1,8],[3,2,18]],[[3,1,12],[3,2,27],[9,4,24],[9,8,288]]
R8_44:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,3,3,3,28,7,2,[1,5,2,0],[[2,2,36]]
I1I2=[[1,1,1],[2,1,3],[2,2,2],[4,9,2]],[[2,1,3],[2,2,2],[4,4,3],[4,8,3],[4,9,8]]
R27_44:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,4,8,8,153,26,3,[1,14,12,0],[[3,3,576]]
I1I2=[[1,1,1],[3,1,8],[3,2,6],[9,9,12]],[[3,1,12],[3,2,9],[9,4,24],[9,8,24],[9,9,90]]
R8_45:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,1,4,2,3,3,24,3,8,[1,4,3,0],[[2,2,40]]
I1I2=[[1,1,1],[2,1,3],[2,2,1],[4,9,3]],[[2,1,3],[2,2,1],[4,4,3],[4,9,12]]
R27_49:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,1,15,8,2,2,129,14,3,[1,16,10,0],[[3,3,600]]
I1I2=[[1,1,1],[3,1,2],[3,2,14],[9,9,4],[9,10,6]],[[3,1,3],[3,2,21],[9,7,24],[9,8,24],[9,9,30],[9,10,81]]
R8_46:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,1,4,2,1,3,20,3,8,[1,2,3,2],[[2,2,44]]
I1I2=[[1,1,1],[2,1,1],[2,2,1],[4,5,2],[4,9,1]],[[2,1,1],[2,2,1],[4,5,5],[4,9,4]]
R27_48:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,1,1,15,4,2,2,105,14,27,[1,8,14,4],[[3,3,624]]
I1I2=[[1,1,1],[3,1,2],[3,2,6],[9,6,4],[9,9,8],[9,10,2]],[[3,1,3],[3,2,9],[9,6,30],[9,9,60],[9,10,27]]
R8_47:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,0,8,6,1,1,30,7,2,[1,6,1,0],[[2,2,34]]
I1I2=[[1,1,1],[2,1,1],[2,2,5],[4,6,1]],[[2,1,1],[2,2,5],[4,6,4],[4,8,6],[4,10,6]]
R27_47:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,0,27,8,2,2,165,26,3,[1,16,10,0],[[3,3,564]]
I1I2=[[1,1,1],[3,1,2],[3,2,14],[9,6,4],[9,10,6]],[[3,1,3],[3,2,21],[9,6,30],[9,8,48],[9,10,81]]
R8_48:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,1,6,4,1,1,24,5,8,[1,4,3,0],[[2,2,40]]
I1I2=[[1,1,1],[2,1,1],[2,2,3],[4,6,1],[4,9,2]],[[2,1,1],[2,2,3],[4,6,4],[4,9,8],[4,10,3]]
R27_48:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,1,1,15,4,2,2,105,14,27,[1,8,14,4],[[3,3,624]]
I1I2=[[1,1,1],[3,1,2],[3,2,6],[9,6,4],[9,9,8],[9,10,2]],[[3,1,3],[3,2,9],[9,6,30],[9,9,60],[9,10,27]]
R8_49:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,0,1,6,6,1,1,26,5,2,[1,6,1,0],[[2,2,38]]
I1I2=[[1,1,1],[2,1,1],[2,2,5],[4,9,1]],[[2,1,1],[2,2,5],[4,7,3],[4,8,3],[4,9,4],[4,10,6]]
R27_49:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,0,1,15,8,2,2,129,14,3,[1,16,10,0],[[3,3,600]]
I1I2=[[1,1,1],[3,1,2],[3,2,14],[9,9,4],[9,10,6]],[[3,1,3],[3,2,21],[9,7,24],[9,8,24],[9,9,30],[9,10,81]]
R8_50:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,1,7,8,0,0,27,6,8,[1,7,0,0],[[2,2,37]]
I1I2=[[1,1,1],[2,2,7]],[[2,2,7],[4,10,18]]
R27_50:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,1,1,19,8,0,0,125,18,27,[1,14,12,0],[[3,3,604]]
I1I2=[[1,1,1],[3,2,14],[9,10,12]],[[3,2,21],[9,10,162]]
R8_51:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,7,0,0],2,1,1,5,4,0,0,21,4,8,[1,3,2,2],[[2,2,43]]
I1I2=[[1,1,1],[2,2,3],[4,11,2]],[[2,2,3],[4,10,3],[4,11,5]]
R27_51:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,26,0,0],3,1,1,11,4,0,0,85,10,27,[1,6,8,12],[[3,3,644]]
I1I2=[[1,1,1],[3,2,6],[9,10,2],[9,11,6]],[[3,2,9],[9,10,27],[9,11,33]]
//#include"IRing.h"
#include<set>
#include"DecompositionRing.h"
#include"Rn.h"
#include"M2r.h"
#include"Mnr.h"
#include"PolynomialRing.h"
#include <ctime>
#include <fstream>
extern IRing* newRppp(int ID,int p=2,int sID=0);
string calcI2a(IRing* r){
int IdRing(IRing* r);
int n=r->size();
vector<pair<int,int> > v;
for(int i=0;i<n-1;i++){
int j=i+1;
vector<int> vi;
vi.push_back(i);
vi.push_back(j);
Subring si(r,vi);
int ni=si.size();
if(ni<n && ni>0){
int ID=IdRing(&si);
#if 1
if(ID==-1 && ni==16){
printf("i=%d,j=%d\n",i,j);
break;
}
#endif
v.push_back(make_pair(ni,ID));
}
}
std::sort(v.begin(),v.end());
vector<tuple<int,int,int> > v1=doN2Vec(v);
string str="[";
for(int i=0;i<v1.size();i++)
{
char sz[200]={0};
sprintf(sz,"[%d,%d,%d],",get<0>(v1[i]),get<1>(v1[i]),get<2>(v1[i]));
str+=sz;
}
if(str.size()>2)
{
str=str.substr(0,str.size()-1);
}
str+="]";
return str;
}
void findsubring(M2r *r,int n)
{
#define PRINT_LOG 1
bool bFind=false;
#if PRINT_LOG
char sz[100]="0";
sprintf(sz,"R%d_%d.txt",r->size(),time(NULL));
ofstream fout(sz);
#endif
string strCmd="del ";
strCmd+=sz;
for(int i=0;i<r->size()-1;i++)
for(int j=i+1;j<r->size();j++)
{
//int j=i+1;
vector<int> v;
v.push_back(i);
v.push_back(j);
Subring S1i(r,v);
int ni=S1i.size();
if(n>0 && ni!=n && ni!=8)
continue;
int ID=IdRing(&S1i);
if(n<r->size() && ni==n && ID==-1||(ni==8 && (ID==6||ID==9||ID==12||ID==18||ID==36||ID==39)))
{
string str=M2r::MStr(r->m_Set[i]);
printf("%d->%s=>",i,str.c_str());
string strj=M2r::MStr(r->m_Set[j]);
printf("%d->%s=>",j,strj.c_str());
string strR=calcRingInvariant(&S1i);
printf("R%d_%d:N0n0bAbOn1n2n4n5n6n7n8S1N2=%s\n",ni,ID,strR.c_str());
//S1i.printTable();
#if PRINT_LOG
fout<<i<<"->"<<str<<","<<j<<"->"<<strj<<"=>";
fout<<"R"<<ni<<"_"<<ID<<":N0n0bAbOn1n2n4n5n6n7n8S1N2="<<strR<<endl;
bFind=true;
#endif
break;
}
}
#if PRINT_LOG
fout.close();
if(!bFind)
system(strCmd.c_str());
else
printf("子环表示已输出到文件%s\n",sz);
#endif
}
void findsubring(Mnr *r,int n)
{
#define PRINT_LOG 1
bool bFind=false;
#if PRINT_LOG
char sz[100]="0";
sprintf(sz,"R%d_%d.txt",r->size(),time(NULL));
ofstream fout(sz);
#endif
string strCmd="del ";
strCmd+=sz;
for(int i=0;i<r->size()-1;i++)
for(int j=i+1;j<r->size();j++)
{
//int j=i+1;
vector<int> v;
v.push_back(i);
v.push_back(j);
Subring S1i(r,v);
int ni=S1i.size();
if(n>0 && ni!=n && ni!=8)
continue;
int ID=IdRing(&S1i);
if(n<r->size() && ni==n && ID==386 || ID==3052 || ID==5552 || ID==-1||(ni==8 && (ID==6||ID==9||ID==12||ID==18||ID==31||ID==32||ID==39)))
{
string str=Mnr::MStr(r->m_Set[i]);
printf("%d->%s=>",i,str.c_str());
string strj=Mnr::MStr(r->m_Set[j]);
printf("%d->%s=>",j,strj.c_str());
string strR=calcRingInvariant(&S1i);
printf("R%d_%d:N0n0bAbOn1n2n4n5n6n7n8S1N2=%s\n",ni,ID,strR.c_str());
if(ID==3052){
string I1=calcI1(&S1i);
string I2=calcI2(&S1i);
printf("I1I2=%s,%s\n",I1.c_str(),I2.c_str());
}
//S1i.printTable();
#if PRINT_LOG
fout<<i<<"->"<<str<<","<<j<<"->"<<strj<<"=>";
fout<<"R"<<ni<<"_"<<ID<<":N0n0bAbOn1n2n4n5n6n7n8S1N2="<<strR<<endl;
bFind=true;
#endif
break;
}
}
#if PRINT_LOG
fout.close();
if(!bFind)
system(strCmd.c_str());
else
printf("子环表示已输出到文件%s\n",sz);
#endif
}
IRing* newRppp(int ID,int p,int sID){
//if(/* ID!=29 && ID!=46 ID!=26 && ID!=34 && ID!=49*/ID!=44)
//return NULL;
//p=2;
if(ID==1){
return new ZmodnZ(p*p*p,p*p*p*p*p*p);
}else if(ID==2){
return new ZmodnZ(p,p*p*p*p);
}else if(ID==3){
return new ZmodnZ(1,p*p*p);
}else if(ID==4){
return new ZmodnZ(p*p,p*p*p*p*p);
}else if(ID==5){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=0;
A[0][1]=p;
A[1][0]=0;
A[1][1]=0;
B[0][0]=p*p;
B[0][1]=p;
B[1][0]=0;
B[1][1]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==8){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=0;
A[0][1]=1;
A[1][0]=0;
A[1][1]=0;
B[0][0]=p;
B[0][1]=0;
B[1][0]=0;
B[1][1]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==10){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=p;
A[0][1]=0;
A[1][0]=0;
A[1][1]=0;
B[0][0]=p;
B[0][1]=0;
B[1][0]=1;
B[1][1]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==11){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=p;
A[0][1]=0;
A[1][0]=0;
A[1][1]=p;
B[0][0]=p;
B[0][1]=1;
B[1][0]=0;
B[1][1]=p;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==13){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
A[0][0]=p;
A[0][1]=0;
A[1][0]=0;
A[1][1]=1;
gen.push_back(A);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
#if 0
for(int i=0;i<r->size();i++){
string str=M2r::MStr(r->m_Set[i]);
printf("%d->%s=>",i,str.c_str());
}
#endif
return r;
}else if(ID==15){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=0;
A[0][1]=0;
A[1][0]=0;
A[1][1]=1;
B[0][0]=0;
B[0][1]=p;
B[1][0]=0;
B[1][1]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==16){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=p;
A[0][1]=0;
A[1][0]=0;
A[1][1]=0;
B[0][0]=p*p;
B[0][1]=p*p;
B[1][0]=0;
B[1][1]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==19){//不用下面的2阶矩阵表示Rppp‘,因为Rppp‘(19,2)=R8_19,但Rppp‘(19,3)!=R27_19(,Rppp‘(19,3)=R27_13、R27_11)
/*
Rppp‘:
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=p;
A[0][1]=p;
A[1][0]=0;
A[1][1]=p;
B[0][0]=0;
B[0][1]=1;
B[1][0]=0;
B[1][1]=p;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
*/
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p*p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
A[0][0]=0;
A[0][1]=0;
A[0][2]=0;
A[1][0]=p;
A[1][1]=p;
A[1][2]=1;
A[2][0]=0;
A[2][1]=0;
A[2][2]=0;
B[0][0]=0;
B[0][1]=0;
B[0][2]=p;
B[1][0]=0;
B[1][1]=0;
B[1][2]=1;
B[2][0]=0;
B[2][1]=0;
B[2][2]=p;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==20){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=0;
A[0][1]=p;
A[1][0]=0;
A[1][1]=0;
B[0][0]=1;
B[0][1]=p;
B[1][0]=0;
B[1][1]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==21){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
A[0][0]=1;
A[0][1]=p;
A[1][0]=p;
A[1][1]=1;
gen.push_back(A);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==23){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
A[0][0]=p;
A[0][1]=p;
A[1][0]=0;
A[1][1]=p;
gen.push_back(A);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==24){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
A[0][0]=0;
A[0][1]=1;
A[1][0]=p;
A[1][1]=0;
gen.push_back(A);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==25){// 必须有3个生成元
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p*p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
MATRIXi C(2,vector<int>(2,p));
A[0][0]=p;
A[0][1]=0;
A[1][0]=0;
A[1][1]=0;
B[0][0]=0;
B[0][1]=0;
B[1][0]=0;
B[1][1]=p;
gen.push_back(A);
gen.push_back(B);
gen.push_back(C);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
#if 0
for(int i=0;i<r->size();i++){
for(int j=0;j<r->size();j++){
vector<int> vi;
vi.push_back(i);
vi.push_back(j);
Subring si(r,vi);
int ni=si.size();
if(ni==r->size()){
string str=M2r::MStr(r->m_Set[i]);
printf("%d->%s=>",i,str.c_str());
string strj=M2r::MStr(r->m_Set[j]);
printf("%d->%s=>",j,strj.c_str());
break;
}
}
}
#endif
return r;
}else if(ID==26){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
MATRIXi8 B(4,vector<TElem>(4,0));
A[0][0]=1;
A[0][1]=1;
A[0][2]=0;
A[0][3]=0;
A[1][0]=0;
A[1][1]=1;
A[1][2]=0;
A[1][3]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=0;
A[2][3]=1;
A[3][0]=1;
A[3][1]=1;
A[3][2]=0;
A[3][3]=0;
B[0][0]=0;
B[0][1]=0;
B[0][2]=1;
B[0][3]=1;
B[1][0]=1;
B[1][1]=0;
B[1][2]=1;
B[1][3]=0;
B[2][0]=1;
B[2][1]=0;
B[2][2]=1;
B[2][3]=0;
B[3][0]=0;
B[3][1]=0;
B[3][2]=1;
B[3][3]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==28){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
A[0][0]=0;
A[0][1]=0;
A[0][2]=1;
A[1][0]=0;
A[1][1]=1;
A[1][2]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=1;
B[0][0]=0;
B[0][1]=1;
B[0][2]=1;
B[1][0]=0;
B[1][1]=1;
B[1][2]=1;
B[2][0]=0;
B[2][1]=1;
B[2][2]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==29){//Rppp(29,2)=R8_29,但Rppp(29,3)=R27_49
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
A[0][0]=1;
A[0][1]=0;
A[0][2]=1;
A[1][0]=0;
A[1][1]=1;
A[1][2]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=1;
B[0][0]=1;
B[0][1]=0;
B[0][2]=1;
B[1][0]=0;
B[1][1]=0;
B[1][2]=0;
B[2][0]=0;
B[2][1]=0;
B[2][2]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==30){// 必须有3个生成元
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
MATRIXi8 B(4,vector<TElem>(4,0));
MATRIXi8 C(4,vector<TElem>(4,0));
A[0][0]=0;
A[0][1]=0;
A[0][2]=0;
A[0][3]=0;
A[1][0]=1;
A[1][1]=1;
A[1][2]=0;
A[1][3]=0;
A[2][0]=0;
A[2][1]=0;
A[2][2]=1;
A[2][3]=0;
A[3][0]=0;
A[3][1]=0;
A[3][2]=0;
A[3][3]=1;
B[0][0]=0;
B[0][1]=0;
B[0][2]=0;
B[0][3]=0;
B[1][0]=1;
B[1][1]=1;
B[1][2]=0;
B[1][3]=0;
B[2][0]=1;
B[2][1]=0;
B[2][2]=1;
B[2][3]=0;
B[3][0]=0;
B[3][1]=0;
B[3][2]=0;
B[3][3]=1;
C[0][0]=0;
C[0][1]=0;
C[0][2]=0;
C[0][3]=0;
C[1][0]=1;
C[1][1]=1;
C[1][2]=0;
C[1][3]=0;
C[2][0]=0;
C[2][1]=0;
C[2][2]=1;
C[2][3]=0;
C[3][0]=1;
C[3][1]=0;
C[3][2]=0;
C[3][3]=1;
gen.push_back(A);
gen.push_back(B);
gen.push_back(C);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
#if 0
for(int i=0;i<r->size();i++){
for(int j=0;j<r->size();j++){
vector<int> vi;
vi.push_back(i);
vi.push_back(j);
Subring si(r,vi);
int ni=si.size();
if(ni==r->size()){
string str=Mnr::MStr(r->m_Set[i]);
printf("%d->%s=>",i,str.c_str());
string strj=Mnr::MStr(r->m_Set[j]);
printf("%d->%s=>",j,strj.c_str());
break;
}
}
}
#endif
return r;
}else if(ID==33){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
A[0][0]=1;
A[0][1]=0;
A[0][2]=0;
A[0][3]=1;
A[1][0]=1;
A[1][1]=0;
A[1][2]=0;
A[1][3]=0;
A[2][0]=1;
A[2][1]=1;
A[2][2]=0;
A[2][3]=1;
A[3][0]=1;
A[3][1]=0;
A[3][2]=0;
A[3][3]=1;
gen.push_back(A);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==34){//Rppp(34,2)=R8_34,但Rppp(34,3)=R27_49
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
MATRIXi8 B(4,vector<TElem>(4,1));
A[0][0]=1;
A[0][1]=0;
A[0][2]=0;
A[0][3]=1;
A[1][0]=1;
A[1][1]=0;
A[1][2]=0;
A[1][3]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=1;
A[2][3]=0;
A[3][0]=1;
A[3][1]=0;
A[3][2]=0;
A[3][3]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==340){//Rppp(34,2)=R8_34,但Rppp(34,3)=R27_28
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
A[0][0]=0;
A[0][1]=0;
A[0][2]=1;
A[1][0]=0;
A[1][1]=1;
A[1][2]=1;
A[2][0]=0;
A[2][1]=0;
A[2][2]=0;
B[0][0]=0;
B[0][1]=1;
B[0][2]=1;
B[1][0]=0;
B[1][1]=0;
B[1][2]=0;
B[2][0]=0;
B[2][1]=0;
B[2][2]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==37){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
A[0][0]=1;
A[0][1]=1;
A[0][2]=0;
A[1][0]=0;
A[1][1]=1;
A[1][2]=0;
A[2][0]=0;
A[2][1]=1;
A[2][2]=0;
B[0][0]=0;
B[0][1]=1;
B[0][2]=1;
B[1][0]=0;
B[1][1]=0;
B[1][2]=0;
B[2][0]=0;
B[2][1]=0;
B[2][2]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==38){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
A[0][0]=0;
A[0][1]=1;
A[0][2]=0;
A[0][3]=1;
A[1][0]=1;
A[1][1]=1;
A[1][2]=0;
A[1][3]=0;
A[2][0]=0;
A[2][1]=0;
A[2][2]=1;
A[2][3]=1;
A[3][0]=0;
A[3][1]=1;
A[3][2]=0;
A[3][3]=1;
gen.push_back(A);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==41){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
MATRIXi8 B(4,vector<TElem>(4,0));
A[0][0]=1;
A[0][3]=1;
A[1][1]=1;
B[0][0]=1;
B[0][3]=1;
B[1][3]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==43){// 必须有3个生成元
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
MATRIXi8 B(4,vector<TElem>(4,0));
MATRIXi8 C(4,vector<TElem>(4,0));
A[0][0]=0;
A[0][1]=1;
A[0][2]=0;
A[0][3]=0;
A[1][0]=0;
A[1][1]=1;
A[1][2]=0;
A[1][3]=0;
A[2][0]=0;
A[2][1]=0;
A[2][2]=1;
A[2][3]=0;
A[3][0]=0;
A[3][1]=0;
A[3][2]=0;
A[3][3]=1;
B[0][0]=0;
B[0][1]=1;
B[0][2]=1;
B[0][3]=1;
B[1][0]=0;
B[1][1]=1;
B[1][2]=0;
B[1][3]=0;
B[2][0]=0;
B[2][1]=0;
B[2][2]=1;
B[2][3]=0;
B[3][0]=0;
B[3][1]=0;
B[3][2]=0;
B[3][3]=1;
C[0][0]=0;
C[0][1]=1;
C[0][2]=1;
C[0][3]=0;
C[1][0]=0;
C[1][1]=1;
C[1][2]=0;
C[1][3]=0;
C[2][0]=0;
C[2][1]=0;
C[2][2]=1;
C[2][3]=0;
C[3][0]=0;
C[3][1]=0;
C[3][2]=0;
C[3][3]=1;
gen.push_back(A);
gen.push_back(B);
gen.push_back(C);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
#if 0
for(int i=0;i<r->size();i++){
for(int j=0;j<r->size();j++){
vector<int> vi;
vi.push_back(i);
vi.push_back(j);
Subring si(r,vi);
int ni=si.size();
if(ni==r->size()){
string str=Mnr::MStr(r->m_Set[i]);
printf("%d->%s=>",i,str.c_str());
string strj=Mnr::MStr(r->m_Set[j]);
printf("%d->%s=>",j,strj.c_str());
break;
}
}
}
#endif
return r;
}else if(ID==44){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
/*
不用下面的3阶矩阵表示Rppp‘,因为Rppp‘(44,2)=R8_44,但Rppp‘(44,3)!=R27_44(,Rppp‘(44,3)=R27_47
A[0][0]=0;
A[0][1]=0;
A[0][2]=0;
A[1][0]=0;
A[1][1]=0;
A[1][2]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=0;
B[0][0]=0;
B[0][1]=1;
B[0][2]=1;
B[1][0]=0;
B[1][1]=0;
B[1][2]=0;
B[2][0]=0;
B[2][1]=0;
B[2][2]=0;
*/
A[0][0]=1;
A[0][1]=0;
A[0][2]=0;
A[1][0]=0;
A[1][1]=1;
A[1][2]=0;
A[2][0]=0;
A[2][1]=0;
A[2][2]=0;
B[0][0]=0;
B[0][1]=0;
B[0][2]=0;
B[1][0]=1;
B[1][1]=0;
B[1][2]=0;
B[2][0]=1;
B[2][1]=0;
B[2][2]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==45){//Rppp(45,2)=R8_45,但Rppp(45,3)=R27_49
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
A[0][0]=0;
A[0][1]=0;
A[0][2]=0;
A[1][0]=0;
A[1][1]=1;
A[1][2]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=1;
B[0][0]=1;
B[0][1]=1;
B[0][2]=1;
B[1][0]=0;
B[1][1]=1;
B[1][2]=0;
B[2][0]=0;
B[2][1]=0;
B[2][2]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==46){//Rppp(46,2)=R8_46,但Rppp(46,3)=R27_48、R27_51
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
A[0][0]=1;
A[0][1]=0;
A[0][2]=1;
A[1][0]=0;
A[1][1]=0;
A[1][2]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=0;
gen.push_back(A);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==47){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
MATRIXi8 B(4,vector<TElem>(4,0));
A[0][0]=1;
A[1][3]=1;
A[3][3]=1;
B[0][0]=1;
B[0][3]=1;
B[1][3]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==48){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=4;
vector<MATRIXi8> gen;
MATRIXi8 A(4,vector<TElem>(4,0));
MATRIXi8 B(4,vector<TElem>(4,0));
A[0][0]=1;
A[1][1]=1;
A[1][3]=1;
A[3][3]=1;
B[0][0]=1;
B[0][3]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==49){
M2r* r=new M2r();
r->m_r=new ZmodnZ(1,p);
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
MATRIXi B(2,vector<int>(2,0));
A[0][0]=1;
A[0][1]=1;
A[1][0]=0;
A[1][1]=1;
B[0][0]=1;
B[0][1]=0;
B[1][0]=0;
B[1][1]=0;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
return r;
}else if(ID==50){
Mnr* r=new Mnr();
r->m_r=new ZmodnZ(1,p);
r->m_n=3;
vector<MATRIXi8> gen;
MATRIXi8 A(3,vector<TElem>(3,0));
MATRIXi8 B(3,vector<TElem>(3,0));
A[0][0]=1;
A[0][1]=0;
A[0][2]=0;
A[1][0]=0;
A[1][1]=0;
A[1][2]=0;
A[2][0]=0;
A[2][1]=1;
A[2][2]=1;
B[0][0]=0;
B[0][1]=0;
B[0][2]=0;
B[1][0]=0;
B[1][1]=1;
B[1][2]=0;
B[2][0]=0;
B[2][1]=0;
B[2][2]=1;
gen.push_back(A);
gen.push_back(B);
r->m_flag=1;
r->m_Set=Mnr::FR(r->m_r,gen);
return r;
}else if(ID==51){
//p=2;
M2r* r=new M2r();
//r->m_r=new ZmodnZ(1,p*p);
M2r *r1=new M2r();
r1->initK(p);
r->m_r=r1;
vector<MATRIXi> gen;
MATRIXi A(2,vector<int>(2,0));
A[0][0]=1;
A[0][1]=1;
A[1][0]=1;
A[1][1]=0;
gen.push_back(A);
r->m_flag=1;
r->m_Set=M2r::FR(r->m_r,gen);
#if 0
for(int i=0;i<r->size();i++){
string str=M2r::MStr(r->m_Set[i]);
printf("%d->%s=>",i,str.c_str());
}
#endif
return r;
}else{
return NULL;
}
}
int main()
{
{
for(int i=1;i<=59;i++){
IRing* r8=newRppp(i,2);
IRing* r27=newRppp(i,3);
if(!r8||!r27)
continue;
int ID8=IdRing(r8);
int ID27=IdRing(r27);
#if 1
printf("Rppp(%d,2)=R%d_%d,Rppp(%d,3)=R%d_%d\n",i,r8->size(),ID8,i,r27->size(),ID27);
#else
string str=calcRingInvariant(r8);
printf("R%d_%d:N0n0bAbOn1n2n4n5n6n7n8S1N2=%s\n",r8->size(),ID8,str.c_str());
string I1=calcI1(r8);
string I2=calcI2(r8);
printf("I1I2=%s,%s\n",I1.c_str(),I2.c_str());
str=calcRingInvariant(r27);
printf("R%d_%d:N0n0bAbOn1n2n4n5n6n7n8S1N2=%s\n",r27->size(),ID27,str.c_str());
I1=calcI1(r27);
I2=calcI2(r27);
printf("I1I2=%s,%s\n",I1.c_str(),I2.c_str());
#endif
}
}
return 0;
}
标签:mod make efi position vector sort tin sprintf too
原文地址:https://www.cnblogs.com/Ivanhan2019/p/13063033.html