區分G32_4和G32_12、G32_13和G32_14、G32_30和G32_31的羣不變量C1、Nk(不涉及特徵標表或子羣ID的計算)

N3、C2不變量暫無作用(N3與N0、C2與C1似乎重複了)。
C1(GAP[32,4])=[[0,28],[1,4]]
C2(GAP[32,4])=[[0,0,28],[0,1,3],[1,1,1]]
Nk(GAP[32,4])=[[1,1,1],[2,1,3],[4,1,4],[4,2,8],[8,2,16]]
C1(GAP[32,12])=[[0,24],[1,8]]
C2(GAP[32,12])=[[0,0,24],[0,1,7],[1,1,1]]
Nk(GAP[32,12])=[[1,1,1],[2,1,3],[4,1,4],[4,2,8],[8,2,16]]
C1(GAP[32,13])=[[0,16],[1,16]]
C2(GAP[32,13])=[[0,0,16],[0,1,15],[1,1,1]]
Nk(GAP[32,13])=[[1,1,1],[2,1,3],[4,2,4],[4,4,16],[8,2,8]]
C1(GAP[32,14])=[[0,24],[1,8]]
C2(GAP[32,14])=[[0,0,24],[0,1,7],[1,1,1]]
Nk(GAP[32,14])=[[1,1,1],[2,1,3],[4,2,4],[4,4,16],[8,2,8]]
C1(GAP[32,30])=[[0,8],[1,24]]
C2(GAP[32,30])=[[0,0,8],[0,1,23],[1,1,1]]
Nk(GAP[32,30])=[[1,1,1],[2,1,3],[2,2,4],[2,4,4],[4,2,8],[4,4,12]]
C1(GAP[32,31])=[[0,8],[1,24]]
C2(GAP[32,31])=[[0,0,8],[0,1,23],[1,1,1]]
Nk(GAP[32,31])=[[1,1,1],[2,1,3],[2,4,8],[4,2,12],[4,4,8]]
D:\MathTool\gaptool>IdGroup G32.4.txt
[4,12,]
GAP[32,0]:
N0=1,3,12,16,0,0
S2=0,3,33,124,144,192
kKEZDCANS=20,[8,12,0,0,0,0],8,8,2,0,0,1,1
I1I2=[[1,1,1],[2,1,3],[4,1,12],[8,1,16]],[[2,1,3],[4,1,30],[4,2,3],[8,1,88],[8,2,36],[16,2,48],[16,5,96]]

D:\MathTool\gaptool>IdGroup G32.12.txt
[4,12,]
GAP[32,0]:
N0=1,3,12,16,0,0
S2=0,3,33,124,144,192
kKEZDCANS=20,[8,12,0,0,0,0],8,8,2,0,0,1,1
I1I2=[[1,1,1],[2,1,3],[4,1,12],[8,1,16]],[[2,1,3],[4,1,30],[4,2,3],[8,1,88],[8,2,36],[16,2,48],[16,5,96]]

D:\MathTool\gaptool>IdGroup G32.13.txt
[13,14,]
GAP[32,0]:
N0=1,3,20,8,0,0
S2=0,3,53,104,144,192
kKEZDCANS=14,[4,6,4,0,0,0],8,4,4,0,0,1,1
I1I2=[[1,1,1],[2,1,3],[4,1,20],[8,1,8]],[[2,1,3],[4,1,50],[4,2,3],[8,1,44],[8,2,60],[16,4,96],[16,5,48]]

D:\MathTool\gaptool>IdGroup G32.14.txt
[13,14,]
GAP[32,0]:
N0=1,3,20,8,0,0
S2=0,3,53,104,144,192
kKEZDCANS=14,[4,6,4,0,0,0],8,4,4,0,0,1,1
I1I2=[[1,1,1],[2,1,3],[4,1,20],[8,1,8]],[[2,1,3],[4,1,50],[4,2,3],[8,1,44],[8,2,60],[16,4,96],[16,5,48]]
[4,12,]
N3(GAP[32,0])=[[1,1,1,1],[1,2,2,3],[1,4,4,12],[1,8,8,16],[2,1,2,3],[2,2,1,3],[2,2,2,6],[2,4,4,36],[2,8,8,48],[4,1,4,12],
[4,2,4,36],[4,4,1,12],[4,4,2,36],[4,4,4,96],[4,8,8,192],[8,1,8,16],[8,2,8,48],[8,4,8,192],[8,8,1,16],[8,8,2,48],[8,8,4,1
92]]
[4,12,]
N3(GAP[32,0])=[[1,1,1,1],[1,2,2,3],[1,4,4,12],[1,8,8,16],[2,1,2,3],[2,2,1,3],[2,2,2,6],[2,4,4,36],[2,8,8,48],[4,1,4,12],
[4,2,4,36],[4,4,1,12],[4,4,2,36],[4,4,4,96],[4,8,8,192],[8,1,8,16],[8,2,8,48],[8,4,8,192],[8,8,1,16],[8,8,2,48],[8,8,4,1
92]]
[13,14,]
N3(GAP[32,0])=[[1,1,1,1],[1,2,2,3],[1,4,4,20],[1,8,8,8],[2,1,2,3],[2,2,1,3],[2,2,2,6],[2,4,4,60],[2,8,8,24],[4,1,4,20],[
4,2,4,60],[4,4,1,20],[4,4,2,60],[4,4,4,192],[4,4,8,128],[4,8,4,128],[4,8,8,32],[8,1,8,8],[8,2,8,24],[8,4,4,128],[8,4,8,3
2],[8,8,1,8],[8,8,2,24],[8,8,4,32]]
[13,14,]
N3(GAP[32,0])=[[1,1,1,1],[1,2,2,3],[1,4,4,20],[1,8,8,8],[2,1,2,3],[2,2,1,3],[2,2,2,6],[2,4,4,60],[2,8,8,24],[4,1,4,20],[
4,2,4,60],[4,4,1,20],[4,4,2,60],[4,4,4,192],[4,4,8,128],[4,8,4,128],[4,8,8,32],[8,1,8,8],[8,2,8,24],[8,4,4,128],[8,4,8,3
2],[8,8,1,8],[8,8,2,24],[8,8,4,32]]

#include "FiniteGroup.h"
#include "quotientGroup.h"
#include <fstream>
#include <complex>
using namespace std;

int g_G32_4[32][32]={
    {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},
    {2,4,7,8,9,10,11,6,14,15,17,18,19,20,21,22,13,23,24,16,1,26,27,28,29,30,25,3,31,5,32,12},
    {3,19,5,11,12,13,22,28,29,7,14,1,16,23,24,25,30,10,9,32,17,18,4,26,6,31,21,20,2,27,15,8},
    {4,8,11,6,14,15,17,10,20,21,13,23,24,16,1,26,19,27,28,22,2,30,25,3,31,5,29,7,32,9,12,18},
    {5,9,12,14,1,16,18,20,2,22,23,3,25,4,26,6,27,7,29,8,30,10,11,31,13,15,17,32,19,21,24,28},
    {6,10,13,15,16,1,19,21,22,2,24,25,3,26,4,5,28,29,7,30,8,9,31,11,12,14,32,17,18,20,23,27},
    {7,24,9,17,18,19,26,3,31,11,20,2,22,27,28,29,5,15,14,12,13,23,8,30,10,32,1,16,4,25,21,6},
    {8,6,17,10,20,21,13,15,16,1,19,27,28,22,2,30,24,25,3,26,4,5,29,7,32,9,31,11,12,14,18,23},
    {9,14,18,20,2,22,23,16,4,26,27,7,29,8,30,10,25,11,31,6,5,15,17,32,19,21,13,12,24,1,28,3},
    {10,15,19,21,22,2,24,1,26,4,28,29,7,30,8,9,3,31,11,5,6,14,32,17,18,20,12,13,23,16,27,25},
    {11,28,14,13,23,24,30,7,32,17,16,4,26,25,3,31,9,21,20,18,19,27,6,5,15,12,2,22,8,29,1,10},
    {12,29,1,23,3,25,10,32,19,18,4,5,6,11,31,13,21,22,2,28,27,7,14,15,16,24,30,8,9,17,26,20},
    {13,7,16,24,25,3,9,17,18,19,26,6,5,31,11,12,20,2,22,27,28,29,15,14,1,23,8,30,10,32,4,21},
    {14,20,23,16,4,26,27,22,8,30,25,11,31,6,5,15,29,17,32,10,9,21,13,12,24,1,19,18,28,2,3,7},
    {15,21,24,1,26,4,28,2,30,8,3,31,11,5,6,14,7,32,17,9,10,20,12,13,23,16,18,19,27,22,25,29},
    {16,22,25,26,6,5,29,30,10,9,31,13,12,15,14,1,32,19,18,21,20,2,24,23,3,4,28,27,7,8,11,17},
    {17,3,20,19,27,28,5,11,12,13,22,8,30,29,7,32,14,1,16,23,24,25,10,9,21,18,4,26,6,31,2,15},
    {18,31,2,27,7,29,15,12,24,23,8,9,10,17,32,19,1,26,4,3,25,11,20,21,22,28,5,6,14,13,30,16},
    {19,11,22,28,29,7,14,13,23,24,30,10,9,32,17,18,16,4,26,25,3,31,21,20,2,27,6,5,15,12,8,1},
    {20,16,27,22,8,30,25,26,6,5,29,17,32,10,9,21,31,13,12,15,14,1,19,18,28,2,24,23,3,4,7,11},
    {21,1,28,2,30,8,3,4,5,6,7,32,17,9,10,20,11,12,13,14,15,16,18,19,27,22,23,24,25,26,29,31},
    {22,26,29,30,10,9,31,5,15,14,32,19,18,21,20,2,12,24,23,1,16,4,28,27,7,8,3,25,11,6,17,13},
    {23,32,4,25,11,31,21,18,28,27,6,14,15,13,12,24,2,30,8,7,29,17,16,1,26,3,9,10,20,19,5,22},
    {24,17,26,3,31,11,20,19,27,28,5,15,14,12,13,23,22,8,30,29,7,32,1,16,4,25,10,9,21,18,6,2},
    {25,18,6,31,13,12,2,27,7,29,15,16,1,24,23,3,8,9,10,17,32,19,26,4,5,11,20,21,22,28,14,30},
    {26,30,31,5,15,14,32,9,21,20,12,24,23,1,16,4,18,28,27,2,22,8,3,25,11,6,7,29,17,10,13,19},
    {27,12,8,29,17,32,1,23,3,25,10,20,21,19,18,28,4,5,6,11,31,13,22,2,30,7,14,15,16,24,9,26},
    {28,13,30,7,32,17,16,24,25,3,9,21,20,18,19,27,26,6,5,31,11,12,2,22,8,29,15,14,1,23,10,4},
    {29,23,10,32,19,18,4,25,11,31,21,22,2,28,27,7,6,14,15,13,12,24,30,8,9,17,16,1,26,3,20,5},
    {30,5,32,9,21,20,12,14,1,16,18,28,27,2,22,8,23,3,25,4,26,6,7,29,17,10,11,31,13,15,19,24},
    {31,27,15,12,24,23,8,29,17,32,1,26,4,3,25,11,10,20,21,19,18,28,5,6,14,13,22,2,30,7,16,9},
    {32,25,21,18,28,27,6,31,13,12,2,30,8,7,29,17,15,16,1,24,23,3,9,10,20,19,26,4,5,11,22,14},
};

int g_G32_12[32][32]={
    {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},
    {2,5,7,8,9,10,12,14,6,16,17,18,19,20,21,22,23,13,25,15,26,1,27,28,29,30,24,31,3,4,32,11},
    {3,17,4,11,12,13,2,7,27,28,1,14,15,23,24,25,8,9,10,18,19,32,5,6,26,31,20,21,22,29,16,30},
    {4,8,11,1,14,15,17,2,20,21,3,23,24,5,6,26,7,27,28,9,10,30,12,13,31,16,18,19,32,22,25,29},
    {5,9,12,14,6,16,18,20,10,22,23,13,25,15,26,1,27,19,29,21,30,2,24,31,3,4,28,32,7,8,11,17},
    {6,10,13,15,16,1,19,21,22,2,24,25,3,26,4,5,28,29,7,30,8,9,31,11,12,14,32,17,18,20,23,27},
    {7,23,8,17,18,19,5,12,24,31,2,20,21,27,28,29,14,6,16,13,25,11,9,10,30,32,15,26,1,3,22,4},
    {8,14,17,2,20,21,23,5,15,26,7,27,28,9,10,30,12,24,31,6,16,4,18,19,32,22,13,25,11,1,29,3},
    {9,6,18,20,10,22,13,15,16,1,27,19,29,21,30,2,24,25,3,26,4,5,28,32,7,8,31,11,12,14,17,23},
    {10,16,19,21,22,2,25,26,1,5,28,29,7,30,8,9,31,3,12,4,14,6,32,17,18,20,11,23,13,15,27,24},
    {11,7,1,3,23,24,8,17,18,19,4,5,6,12,13,31,2,20,21,27,28,29,14,15,16,25,9,10,30,32,26,22},
    {12,27,14,23,13,25,9,18,28,32,5,15,26,24,31,3,20,10,22,19,29,17,6,16,4,11,21,30,2,7,1,8},
    {13,28,15,24,25,3,10,19,32,17,6,26,4,31,11,12,21,22,2,29,7,27,16,1,14,23,30,8,9,18,5,20},
    {14,20,23,5,15,26,27,9,21,30,12,24,31,6,16,4,18,28,32,10,22,8,13,25,11,1,19,29,17,2,3,7},
    {15,21,24,6,26,4,28,10,30,8,13,31,11,16,1,14,19,32,17,22,2,20,25,3,23,5,29,7,27,9,12,18},
    {16,22,25,26,1,5,29,30,2,9,31,3,12,4,14,6,32,7,18,8,20,10,11,23,13,15,17,27,19,21,24,28},
    {17,12,2,7,27,28,14,23,13,25,8,9,10,18,19,32,5,15,26,24,31,3,20,21,22,29,6,16,4,11,30,1},
    {18,24,20,27,19,29,6,13,31,11,9,21,30,28,32,7,15,16,1,25,3,23,10,22,8,17,26,4,5,12,2,14},
    {19,31,21,28,29,7,16,25,11,23,10,30,8,32,17,18,26,1,5,3,12,24,22,2,20,27,4,14,6,13,9,15},
    {20,15,27,9,21,30,24,6,26,4,18,28,32,10,22,8,13,31,11,16,1,14,19,29,17,2,25,3,23,5,7,12},
    {21,26,28,10,30,8,31,16,4,14,19,32,17,22,2,20,25,11,23,1,5,15,29,7,27,9,3,12,24,6,18,13},
    {22,1,29,30,2,9,3,4,5,6,32,7,18,8,20,10,11,12,13,14,15,16,17,27,19,21,23,24,25,26,28,31},
    {23,18,5,12,24,31,20,27,19,29,14,6,16,13,25,11,9,21,30,28,32,7,15,26,1,3,10,22,8,17,4,2},
    {24,19,6,13,31,11,21,28,29,7,15,16,1,25,3,23,10,30,8,32,17,18,26,4,5,12,22,2,20,27,14,9},
    {25,32,26,31,3,12,22,29,17,27,16,4,14,11,23,13,30,2,9,7,18,28,1,5,15,24,8,20,10,19,6,21},
    {26,30,31,16,4,14,32,22,8,20,25,11,23,1,5,15,29,17,27,2,9,21,3,12,24,6,7,18,28,10,13,19},
    {27,13,9,18,28,32,15,24,25,3,20,10,22,19,29,17,6,26,4,31,11,12,21,30,2,7,16,1,14,23,8,5},
    {28,25,10,19,32,17,26,31,3,12,21,22,2,29,7,27,16,4,14,11,23,13,30,8,9,18,1,5,15,24,20,6},
    {29,11,30,32,7,18,1,3,23,24,22,8,20,17,27,19,4,5,6,12,13,31,2,9,21,28,14,15,16,25,10,26},
    {30,4,32,22,8,20,11,1,14,15,29,17,27,2,9,21,3,23,24,5,6,26,7,18,28,10,12,13,31,16,19,25},
    {31,29,16,25,11,23,30,32,7,18,26,1,5,3,12,24,22,8,20,17,27,19,4,14,6,13,2,9,21,28,15,10},
    {32,3,22,29,17,27,4,11,12,13,30,2,9,7,18,28,1,14,15,23,24,25,8,20,10,19,5,6,26,31,21,16},
};

int g_G32_13[32][32]={
    {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},
    {2,5,7,8,9,10,12,14,1,16,17,18,19,20,21,22,23,3,25,4,26,6,27,28,29,30,11,31,13,15,32,24},
    {3,17,4,11,12,13,10,19,27,28,6,14,15,23,24,25,21,22,2,29,7,32,16,1,26,31,30,8,9,18,5,20},
    {4,21,11,6,14,15,28,2,30,8,13,23,24,16,1,26,7,32,17,9,10,20,25,3,31,5,18,19,27,22,12,29},
    {5,9,12,14,1,16,18,20,2,22,23,3,25,4,26,6,27,7,29,8,30,10,11,31,13,15,17,32,19,21,24,28},
    {6,10,13,15,16,1,19,21,22,2,24,25,3,26,4,5,28,29,7,30,8,9,31,11,12,14,32,17,18,20,23,27},
    {7,23,8,17,18,19,16,25,11,31,10,20,21,27,28,29,26,6,5,13,12,24,22,2,30,32,15,14,1,3,9,4},
    {8,26,17,10,20,21,31,5,15,14,19,27,28,22,2,30,12,24,23,1,16,4,29,7,32,9,3,25,11,6,18,13},
    {9,1,18,20,2,22,3,4,5,6,27,7,29,8,30,10,11,12,13,14,15,16,17,32,19,21,23,24,25,26,28,31},
    {10,16,19,21,22,2,25,26,6,5,28,29,7,30,8,9,31,13,12,15,14,1,32,17,18,20,24,23,3,4,27,11},
    {11,7,6,13,23,24,8,17,18,19,15,16,1,25,3,31,10,20,21,27,28,29,26,4,5,12,22,2,30,32,14,9},
    {12,27,14,23,3,25,22,29,17,32,16,4,26,11,31,13,30,10,9,19,18,28,6,5,15,24,21,20,2,7,1,8},
    {13,28,15,24,25,3,2,7,32,17,1,26,4,31,11,12,8,9,10,18,19,27,5,6,14,23,20,21,22,29,16,30},
    {14,30,23,16,4,26,32,9,21,20,25,11,31,6,5,15,18,28,27,2,22,8,13,12,24,1,7,29,17,10,3,19},
    {15,8,24,1,26,4,17,10,20,21,3,31,11,5,6,14,19,27,28,22,2,30,12,13,23,16,29,7,32,9,25,18},
    {16,22,25,26,6,5,29,30,10,9,31,13,12,15,14,1,32,19,18,21,20,2,24,23,3,4,28,27,7,8,11,17},
    {17,12,10,19,27,28,14,23,3,25,21,22,2,29,7,32,16,4,26,11,31,13,30,8,9,18,6,5,15,24,20,1},
    {18,11,20,27,7,29,6,13,23,24,22,8,30,17,32,19,15,16,1,25,3,31,10,9,21,28,26,4,5,12,2,14},
    {19,31,21,28,29,7,5,12,24,23,2,30,8,32,17,18,14,1,16,3,25,11,9,10,20,27,4,26,6,13,22,15},
    {20,15,27,22,8,30,24,1,26,4,29,17,32,10,9,21,3,31,11,5,6,14,19,18,28,2,12,13,23,16,7,25},
    {21,14,28,2,30,8,23,16,4,26,7,32,17,9,10,20,25,11,31,6,5,15,18,19,27,22,13,12,24,1,29,3},
    {22,6,29,30,10,9,13,15,16,1,32,19,18,21,20,2,24,25,3,26,4,5,28,27,7,8,31,11,12,14,17,23},
    {23,18,16,25,11,31,20,27,7,29,26,6,5,13,12,24,22,8,30,17,32,19,15,14,1,3,10,9,21,28,4,2},
    {24,19,1,3,31,11,21,28,29,7,4,5,6,12,13,23,2,30,8,32,17,18,14,15,16,25,9,10,20,27,26,22},
    {25,32,26,31,13,12,9,18,28,27,5,15,14,24,23,3,20,2,22,7,29,17,1,16,4,11,8,30,10,19,6,21},
    {26,20,31,5,15,14,27,22,8,30,12,24,23,1,16,4,29,17,32,10,9,21,3,25,11,6,19,18,28,2,13,7},
    {27,3,22,29,17,32,4,11,12,13,30,10,9,19,18,28,6,14,15,23,24,25,21,20,2,7,16,1,26,31,8,5},
    {28,25,2,7,32,17,26,31,13,12,8,9,10,18,19,27,5,15,14,24,23,3,20,21,22,29,1,16,4,11,30,6},
    {29,24,30,32,19,18,1,3,31,11,9,21,20,28,27,7,4,5,6,12,13,23,2,22,8,17,14,15,16,25,10,26},
    {30,4,32,9,21,20,11,6,14,15,18,28,27,2,22,8,13,23,24,16,1,26,7,29,17,10,25,3,31,5,19,12},
    {31,29,5,12,24,23,30,32,19,18,14,1,16,3,25,11,9,21,20,28,27,7,4,26,6,13,2,22,8,17,15,10},
    {32,13,9,18,28,27,15,24,25,3,20,2,22,7,29,17,1,26,4,31,11,12,8,30,10,19,5,6,14,23,21,16},
};

int g_G32_14[32][32]={
    {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},
    {2,5,7,8,9,10,12,14,1,16,17,18,19,20,21,22,23,3,25,4,26,6,27,28,29,30,11,31,13,15,32,24},
    {3,17,15,11,12,13,2,19,27,28,1,26,4,23,24,25,8,9,10,29,7,32,5,6,14,31,20,21,22,18,16,30},
    {4,21,11,6,14,15,28,2,30,8,13,23,24,16,1,26,7,32,17,9,10,20,25,3,31,5,18,19,27,22,12,29},
    {5,9,12,14,1,16,18,20,2,22,23,3,25,4,26,6,27,7,29,8,30,10,11,31,13,15,17,32,19,21,24,28},
    {6,10,13,15,16,1,19,21,22,2,24,25,3,26,4,5,28,29,7,30,8,9,31,11,12,14,32,17,18,20,23,27},
    {7,23,21,17,18,19,5,25,11,31,2,30,8,27,28,29,14,1,16,13,12,24,9,10,20,32,4,26,6,3,22,15},
    {8,26,17,10,20,21,31,5,15,14,19,27,28,22,2,30,12,24,23,1,16,4,29,7,32,9,3,25,11,6,18,13},
    {9,1,18,20,2,22,3,4,5,6,27,7,29,8,30,10,11,12,13,14,15,16,17,32,19,21,23,24,25,26,28,31},
    {10,16,19,21,22,2,25,26,6,5,28,29,7,30,8,9,31,13,12,15,14,1,32,17,18,20,24,23,3,4,27,11},
    {11,7,1,13,23,24,21,17,18,19,4,5,6,25,3,31,2,30,8,27,28,29,14,15,16,12,9,10,20,32,26,22},
    {12,27,26,23,3,25,9,29,17,32,5,15,14,11,31,13,20,2,22,19,18,28,1,16,4,24,8,30,10,7,6,21},
    {13,28,4,24,25,3,10,7,32,17,6,14,15,31,11,12,21,22,2,18,19,27,16,1,26,23,30,8,9,29,5,20},
    {14,30,23,16,4,26,32,9,21,20,25,11,31,6,5,15,18,28,27,2,22,8,13,12,24,1,7,29,17,10,3,19},
    {15,8,24,1,26,4,17,10,20,21,3,31,11,5,6,14,19,27,28,22,2,30,12,13,23,16,29,7,32,9,25,18},
    {16,22,25,26,6,5,29,30,10,9,31,13,12,15,14,1,32,19,18,21,20,2,24,23,3,4,28,27,7,8,11,17},
    {17,12,2,19,27,28,26,23,3,25,8,9,10,29,7,32,5,15,14,11,31,13,20,21,22,18,1,16,4,24,30,6},
    {18,11,30,27,7,29,1,13,23,24,9,21,20,17,32,19,4,5,6,25,3,31,2,22,8,28,14,15,16,12,10,26},
    {19,31,8,28,29,7,16,12,24,23,10,20,21,32,17,18,26,6,5,3,25,11,22,2,30,27,15,14,1,13,9,4},
    {20,15,27,22,8,30,24,1,26,4,29,17,32,10,9,21,3,31,11,5,6,14,19,18,28,2,12,13,23,16,7,25},
    {21,14,28,2,30,8,23,16,4,26,7,32,17,9,10,20,25,11,31,6,5,15,18,19,27,22,13,12,24,1,29,3},
    {22,6,29,30,10,9,13,15,16,1,32,19,18,21,20,2,24,25,3,26,4,5,28,27,7,8,31,11,12,14,17,23},
    {23,18,5,25,11,31,30,27,7,29,14,1,16,13,12,24,9,21,20,17,32,19,4,26,6,3,2,22,8,28,15,10},
    {24,19,6,3,31,11,8,28,29,7,15,16,1,12,13,23,10,20,21,32,17,18,26,4,5,25,22,2,30,27,14,9},
    {25,32,14,31,13,12,22,18,28,27,16,4,26,24,23,3,30,10,9,7,29,17,6,5,15,11,21,20,2,19,1,8},
    {26,20,31,5,15,14,27,22,8,30,12,24,23,1,16,4,29,17,32,10,9,21,3,25,11,6,19,18,28,2,13,7},
    {27,3,9,29,17,32,15,11,12,13,20,2,22,19,18,28,1,26,4,23,24,25,8,30,10,7,5,6,14,31,21,16},
    {28,25,10,7,32,17,14,31,13,12,21,22,2,18,19,27,16,4,26,24,23,3,30,8,9,29,6,5,15,11,20,1},
    {29,24,20,32,19,18,6,3,31,11,22,8,30,28,27,7,15,16,1,12,13,23,10,9,21,17,26,4,5,25,2,14},
    {30,4,32,9,21,20,11,6,14,15,18,28,27,2,22,8,13,23,24,16,1,26,7,29,17,10,25,3,31,5,19,12},
    {31,29,16,12,24,23,20,32,19,18,26,6,5,3,25,11,22,8,30,28,27,7,15,14,1,13,10,9,21,17,4,2},
    {32,13,22,18,28,27,4,24,25,3,30,10,9,7,29,17,6,14,15,31,11,12,21,20,2,19,16,1,26,23,8,5},
};

int g_G32_30[32][32]={
    {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},
    {2,1,7,8,9,10,3,4,5,6,17,18,19,20,21,22,11,12,13,14,15,16,27,28,29,30,23,24,25,26,32,31},
    {3,18,1,11,12,13,9,27,7,29,4,5,6,23,24,25,20,2,22,17,32,19,14,15,16,31,8,30,10,28,26,21},
    {4,21,11,5,14,15,28,22,30,8,12,23,24,1,16,26,29,32,17,10,9,20,3,25,31,6,19,18,27,2,13,7},
    {5,9,12,14,1,16,18,20,2,22,23,3,25,4,26,6,27,7,29,8,30,10,11,31,13,15,17,32,19,21,24,28},
    {6,10,13,15,16,1,19,21,22,2,24,25,3,26,4,5,28,29,7,30,8,9,31,11,12,14,32,17,18,20,23,27},
    {7,12,2,17,18,19,5,23,3,25,8,9,10,27,28,29,14,1,16,11,31,13,20,21,22,32,4,26,6,24,30,15},
    {8,15,17,9,20,21,24,16,26,4,18,27,28,2,22,30,25,31,11,6,5,14,7,29,32,10,13,12,23,1,19,3},
    {9,5,18,20,2,22,12,14,1,16,27,7,29,8,30,10,23,3,25,4,26,6,17,32,19,21,11,31,13,15,28,24},
    {10,6,19,21,22,2,13,15,16,1,28,29,7,30,8,9,24,25,3,26,4,5,32,17,18,20,31,11,12,14,27,23},
    {11,32,4,12,23,24,30,19,28,27,5,14,15,3,25,31,10,21,20,29,7,17,1,16,26,13,22,2,8,18,6,9},
    {12,7,5,23,3,25,2,17,18,19,14,1,16,11,31,13,8,9,10,27,28,29,4,26,6,24,20,21,22,32,15,30},
    {13,29,6,24,25,3,22,32,19,18,15,16,1,31,11,12,30,10,9,28,27,7,26,4,5,23,21,20,2,17,14,8},
    {14,30,23,1,4,26,32,10,21,20,3,11,31,5,6,15,19,28,27,22,2,8,12,13,24,16,29,7,17,9,25,18},
    {15,8,24,16,26,4,17,9,20,21,25,31,11,6,5,14,18,27,28,2,22,30,13,12,23,1,7,29,32,10,3,19},
    {16,22,25,26,6,5,29,30,10,9,31,13,12,15,14,1,32,19,18,21,20,2,24,23,3,4,28,27,7,8,11,17},
    {17,31,8,18,27,28,26,13,24,23,9,20,21,7,29,32,6,15,14,25,3,11,2,22,30,19,16,1,4,12,10,5},
    {18,3,9,27,7,29,1,11,12,13,20,2,22,17,32,19,4,5,6,23,24,25,8,30,10,28,14,15,16,31,21,26},
    {19,25,10,28,29,7,16,31,13,12,21,22,2,32,17,18,26,6,5,24,23,3,30,8,9,27,15,14,1,11,20,4},
    {20,26,27,2,8,30,31,6,15,14,7,17,32,9,10,21,13,24,23,16,1,4,18,19,28,22,25,3,11,5,29,12},
    {21,4,28,22,30,8,11,5,14,15,29,32,17,10,9,20,12,23,24,1,16,26,19,18,27,2,3,25,31,6,7,13},
    {22,16,29,30,10,9,25,26,6,5,32,19,18,21,20,2,31,13,12,15,14,1,28,27,7,8,24,23,3,4,17,11},
    {23,28,14,3,11,31,21,29,32,17,1,4,26,12,13,24,22,30,8,19,18,27,5,6,15,25,10,9,20,7,16,2},
    {24,27,15,25,31,11,20,7,17,32,16,26,4,13,12,23,2,8,30,18,19,28,6,5,14,3,9,10,21,29,1,22},
    {25,19,16,31,13,12,10,28,29,7,26,6,5,24,23,3,21,22,2,32,17,18,15,14,1,11,30,8,9,27,4,20},
    {26,20,31,6,15,14,27,2,8,30,13,24,23,16,1,4,7,17,32,9,10,21,25,3,11,5,18,19,28,22,12,29},
    {27,24,20,7,17,32,15,25,31,11,2,8,30,18,19,28,16,26,4,13,12,23,9,10,21,29,6,5,14,3,22,1},
    {28,23,21,29,32,17,14,3,11,31,22,30,8,19,18,27,1,4,26,12,13,24,10,9,20,7,5,6,15,25,2,16},
    {29,13,22,32,19,18,6,24,25,3,30,10,9,28,27,7,15,16,1,31,11,12,21,20,2,17,26,4,5,23,8,14},
    {30,14,32,10,21,20,23,1,4,26,19,28,27,22,2,8,3,11,31,5,6,15,29,7,17,9,12,13,24,16,18,25},
    {31,17,26,13,24,23,8,18,27,28,6,15,14,25,3,11,9,20,21,7,29,32,16,1,4,12,2,22,30,19,5,10},
    {32,11,30,19,28,27,4,12,23,24,10,21,20,29,7,17,5,14,15,3,25,31,22,2,8,18,1,16,26,13,9,6},
};

int g_G32_31[32][32]={
    {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},
    {2,1,7,8,9,10,3,4,5,6,17,18,19,20,21,22,11,12,13,14,15,16,27,28,29,30,23,24,25,26,32,31},
    {3,18,6,11,12,13,22,27,7,29,15,16,1,23,24,25,30,10,9,17,32,19,26,4,5,31,21,20,2,28,14,8},
    {4,21,11,5,14,15,28,22,30,8,12,23,24,1,16,26,29,32,17,10,9,20,3,25,31,6,19,18,27,2,13,7},
    {5,9,12,14,1,16,18,20,2,22,23,3,25,4,26,6,27,7,29,8,30,10,11,31,13,15,17,32,19,21,24,28},
    {6,10,13,15,16,1,19,21,22,2,24,25,3,26,4,5,28,29,7,30,8,9,31,11,12,14,32,17,18,20,23,27},
    {7,12,10,17,18,19,16,23,3,25,21,22,2,27,28,29,26,6,5,11,31,13,30,8,9,32,15,14,1,24,20,4},
    {8,15,17,9,20,21,24,16,26,4,18,27,28,2,22,30,25,31,11,6,5,14,7,29,32,10,13,12,23,1,19,3},
    {9,5,18,20,2,22,12,14,1,16,27,7,29,8,30,10,23,3,25,4,26,6,17,32,19,21,11,31,13,15,28,24},
    {10,6,19,21,22,2,13,15,16,1,28,29,7,30,8,9,24,25,3,26,4,5,32,17,18,20,31,11,12,14,27,23},
    {11,32,15,12,23,24,20,19,28,27,16,26,4,3,25,31,2,8,30,29,7,17,6,5,14,13,9,10,21,18,1,22},
    {12,7,16,23,3,25,10,17,18,19,26,6,5,11,31,13,21,22,2,27,28,29,15,14,1,24,30,8,9,32,4,20},
    {13,29,1,24,25,3,9,32,19,18,4,5,6,31,11,12,20,2,22,28,27,7,14,15,16,23,8,30,10,17,26,21},
    {14,30,23,1,4,26,32,10,21,20,3,11,31,5,6,15,19,28,27,22,2,8,12,13,24,16,29,7,17,9,25,18},
    {15,8,24,16,26,4,17,9,20,21,25,31,11,6,5,14,18,27,28,2,22,30,13,12,23,1,7,29,32,10,3,19},
    {16,22,25,26,6,5,29,30,10,9,31,13,12,15,14,1,32,19,18,21,20,2,24,23,3,4,28,27,7,8,11,17},
    {17,31,21,18,27,28,14,13,24,23,22,30,8,7,29,32,1,4,26,25,3,11,10,9,20,19,5,6,15,12,2,16},
    {18,3,22,27,7,29,6,11,12,13,30,10,9,17,32,19,15,16,1,23,24,25,21,20,2,28,26,4,5,31,8,14},
    {19,25,2,28,29,7,5,31,13,12,8,9,10,32,17,18,14,1,16,24,23,3,20,21,22,27,4,26,6,11,30,15},
    {20,26,27,2,8,30,31,6,15,14,7,17,32,9,10,21,13,24,23,16,1,4,18,19,28,22,25,3,11,5,29,12},
    {21,4,28,22,30,8,11,5,14,15,29,32,17,10,9,20,12,23,24,1,16,26,19,18,27,2,3,25,31,6,7,13},
    {22,16,29,30,10,9,25,26,6,5,32,19,18,21,20,2,31,13,12,15,14,1,28,27,7,8,24,23,3,4,17,11},
    {23,28,26,3,11,31,8,29,32,17,6,15,14,12,13,24,9,20,21,19,18,27,16,1,4,25,2,22,30,7,5,10},
    {24,27,4,25,31,11,30,7,17,32,5,14,15,13,12,23,10,21,20,18,19,28,1,16,26,3,22,2,8,29,6,9},
    {25,19,5,31,13,12,2,28,29,7,14,1,16,24,23,3,8,9,10,32,17,18,4,26,6,11,20,21,22,27,15,30},
    {26,20,31,6,15,14,27,2,8,30,13,24,23,16,1,4,7,17,32,9,10,21,25,3,11,5,18,19,28,22,12,29},
    {27,24,30,7,17,32,4,25,31,11,10,21,20,18,19,28,5,14,15,13,12,23,22,2,8,29,1,16,26,3,9,6},
    {28,23,8,29,32,17,26,3,11,31,9,20,21,19,18,27,6,15,14,12,13,24,2,22,30,7,16,1,4,25,10,5},
    {29,13,9,32,19,18,1,24,25,3,20,2,22,28,27,7,4,5,6,31,11,12,8,30,10,17,14,15,16,23,21,26},
    {30,14,32,10,21,20,23,1,4,26,19,28,27,22,2,8,3,11,31,5,6,15,29,7,17,9,12,13,24,16,18,25},
    {31,17,14,13,24,23,21,18,27,28,1,4,26,25,3,11,22,30,8,7,29,32,5,6,15,12,10,9,20,19,16,2},
    {32,11,20,19,28,27,15,12,23,24,2,8,30,29,7,17,16,26,4,3,25,31,9,10,21,18,6,5,14,13,22,1},
};

int Ord(IGroup* g,int i){
    vector<int> S1=Order(g,i);
    int ord=S1.size();
    return ord;
}

vector<tuple<int,int,int,int> > doN3Vec(vector<tuple<int,int,int> >& v){
    vector<tuple<int,int,int,int> > ret;
    int n=v.size();
    for(int i=0;i<n;i++){
        tuple<int,int,int> vi=v[i];
        vector<tuple<int,int,int,int> >::const_iterator it=std::find_if(ret.begin(),ret.end(),[vi](tuple<int,int,int,int>& obj)->bool{if(get<0>(obj)==get<0>(vi) && get<1>(obj)==get<1>(vi) && get<2>(obj)==get<2>(vi))return true;return false;});
        if(it==ret.end()){
            ret.push_back(make_tuple(get<0>(vi),get<1>(vi),get<2>(vi),1));
        }else{
            int cnt=get<3>(*it);
            ret[it-ret.begin()]=make_tuple(get<0>(vi),get<1>(vi),get<2>(vi),cnt+1);
        }
    }
    return ret;
}

string calcN3(IGroup* g){
    int IdGroup(IGroup* g);
    int n=g->size();
    vector<tuple<int,int,int> > v;
    for(int i=0;i<n;i++){
#if 1
        int i2=g->mul(i,i);
        int i3=g->mul(i2,i);
        int I=Ord(g,i);
        int J=Ord(g,i2);
        int IJ=Ord(g,i3);
        v.push_back(make_tuple(I,J,IJ));
#else
        for(int j=0;j<n;j++){
            int ij=g->mul(i,j);
            int I=Ord(g,i);
            int J=Ord(g,j);
            int IJ=Ord(g,ij);
            v.push_back(make_tuple(I,J,IJ));
        }
#endif
    }
    std::sort(v.begin(),v.end());
    vector<tuple<int,int,int,int> > v1=doN3Vec(v);
    string str="[";
    for(int i=0;i<v1.size();i++)
    {
        char sz[1024]={0};
        sprintf(sz,"[%d,%d,%d,%d],",get<0>(v1[i]),get<1>(v1[i]),get<2>(v1[i]),get<3>(v1[i]));
        str+=sz;
    }
    if(str.size()>2)
    {
        str=str.substr(0,str.size()-1);
    }
    str+="]";
    return str;
}

string calcC2(IGroup* g){
    int IdGroup(IGroup* g);
    int n=g->size();
    vector<pair<int,int> > v;
   for(int i=0;i<n;i++){
       int i2=g->mul(i,i);
       int i3=g->mul(i2,i);
       int I1=IsConjugacy(g,i,i2);
       int I2=IsConjugacy(g,i,i3);
       v.push_back(make_pair(I1,I2));
   }
    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;
}

vector<pair<int,int> > doN1Vec(vector<int>& v){
    vector<pair<int,int> > ret;
    int n=v.size();
    for(int i=0;i<n;i++){
        int vi=v[i];
        vector<pair<int,int> >::const_iterator it=std::find_if(ret.begin(),ret.end(),[vi](pair<int,int>& obj)->bool{if(vi==obj.first)return true;return false;});
        if(it==ret.end()){
            ret.push_back(make_pair(vi,1));
        }else{
            int cnt=(*it).second;
            ret[it-ret.begin()]=make_pair(vi,cnt+1);
        }
    }
    return ret;
}

string calcC1(IGroup* g){
    int IdGroup(IGroup* g);
    int n=g->size();
    vector<int> v;
   for(int i=0;i<n;i++){
       int i2=g->mul(i,i);
       int i3=g->mul(i2,i);
       int I1=IsConjugacy(g,i,i3);
       v.push_back(I1);
   }
    std::sort(v.begin(),v.end());
    vector<pair<int,int> > v1=doN1Vec(v);
    string str="[";
    for(int i=0;i<v1.size();i++){
        char sz[200]={0};
        sprintf(sz,"[%d,%d],",v1[i].first,v1[i].second);
        str+=sz;
    }
    if(str.size()>2){
        str=str.substr(0,str.size()-1);
    }
    str+="]";
    return str;
}

int calk(vector<vector<int> >& vv,int i){
    int k=vv.size();
     for(int j=0;j<k;j++)
    {
        int kj=vv[j].size();
        vector<int>::iterator p=std::find(vv[j].begin(),vv[j].end(),i);
        if(p!=vv[j].end()){
            return kj;
        }
    }
    return 0;
}

string calcNk(IGroup* g){
    int IdGroup(IGroup* g);
    int n=g->size();
    vector<pair<int,int> > v;
    vector<vector<int >> vv=ConjugacyClasses(g);
   for(int i=0;i<n;i++){
       int I1=Ord(g,i);
       int I2=calk(vv,i);
       v.push_back(make_pair(I1,I2));
   }
    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;
}

int main()
{
    int *g_G32Mul[]={&g_G32_4[0][0],&g_G32_12[0][0],&g_G32_13[0][0],&g_G32_14[0][0],&g_G32_30[0][0],&g_G32_31[0][0]};
    int cnt=sizeof(g_G32Mul)/sizeof(g_G32Mul[0]);
    for(int i=0;i<cnt;i++)
    {
        FiniteGroup *g=new FiniteGroup(32,g_G32Mul[i],1);
        g->m_flag=0;
        string strC1=calcC1(g);
        string strC2=calcC2(g);
        string strNk=calcNk(g);
        int ID=IdGroup(g);
        printf("C1(GAP[%d,%d])=%s\n",g->size(),ID,strC1.c_str());
        printf("C2(GAP[%d,%d])=%s\n",g->size(),ID,strC2.c_str());
        printf("Nk(GAP[%d,%d])=%s\n",g->size(),ID,strNk.c_str());
        delete g;
        g=NULL;
    }

    system("pause");
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章