D:\go20190906\src\IGroup>go build ZD.go
[0x7FEF9B63C50] ANOMALY: meaningless REX prefix used
# command-line-arguments
[0x7FEF9B63C50] ANOMALY: meaningless REX prefix used
D:\go20190906\src\IGroup>ZD
[0x7FEF9B63C50] ANOMALY: meaningless REX prefix used
ZD3= [0]
DD3= [0 3 4]
ZD4= [0 3]
DD4= [0 3]
ZQ8= [0 1]
DQ8= [0 1]
package main
import (
"fmt"
)
func pibub(p *[]int){
n:=len(*p)
var j,i,d int
k:=0
m:=n-1
for{
if(k>=m){
break
}
j=m-1
m=0
for i=k; i<=j; i++{
if ((*p)[i]>(*p)[i+1]){
d=(*p)[i]
(*p)[i]=(*p)[i+1]
(*p)[i+1]=d
m=i
}
}
j=k+1
k=0
for i=m; i>=j; i--{
if ((*p)[i-1]>(*p)[i]){
d=(*p)[i]
(*p)[i]=(*p)[i-1]
(*p)[i-1]=d
k=i
}
}
}
return
}
func findpos(p *[]int,x int)int{
N:=len(*p)
for i:=0;i<N;i++{
if((*p)[i]==x){
return i
}
}
return -1
}
func removesame(p *[]int)[]int{
ret:=[]int{}
N:=len(*p)
for i:=0;i<N;i++{
if(findpos(&ret,(*p)[i])==-1){
ret=append(ret,(*p)[i])
}
}
return ret
}
func IsInCenterOfG(vvG *[][]int,j int)bool{
N:=len(*vvG)
for i:=0;i<N;i++{
ij:=(*vvG)[i][j]-1
ji:=(*vvG)[j][i]-1
if(ij!=ji){
return false
}
}
return true
}
func CenterOfG(vvG *[][]int)[]int{
ret:=[]int{}
N:=len(*vvG)
for i:=0;i<N;i++{
if(IsInCenterOfG(vvG,i)){
ret=append(ret,i)
}
}
return ret
}
func Inv(vvG *[][]int,j int)int{
N:=len(*vvG)
for i:=0;i<N;i++{
ij:=(*vvG)[i][j]-1
if(ij==0){
return i
}
}
return -1
}
func commutatorOfG(vvG *[][]int)[]int{
ret:=[]int{}
ret=append(ret,0)
N:=len(*vvG)
for i:=0;i<N;i++{
I:=Inv(vvG,i)
for j:=i+1;j<N;j++{
ij:=(*vvG)[i][j]-1
J:=Inv(vvG,j)
IJ:=(*vvG)[I][J]-1
ijIJ:=(*vvG)[ij][IJ]-1
ret=append(ret,ijIJ)
}
}
pibub(&ret)
ret1:=removesame(&ret)
return ret1
}
var g_D3Mul [][]int=[][]int{
{1,2,3,4,5,6},
{2,1,4,3,6,5},
{3,5,1,6,2,4},
{4,6,2,5,1,3},
{5,3,6,1,4,2},
{6,4,5,2,3,1},
}
var g_D4Mul [][]int=[][]int{
{1,2,3,4,5,6,7,8},
{2,1,4,3,6,5,8,7},
{3,4,1,2,7,8,5,6},
{4,3,2,1,8,7,6,5},
{5,7,6,8,1,3,2,4},
{6,8,5,7,2,4,1,3},
{7,5,8,6,3,1,4,2},
{8,6,7,5,4,2,3,1},
}
var g_Q8Mul [][]int=[][]int{
{1,2,3,4,5,6,7,8},
{2,1,4,3,6,5,8,7},
{3,4,2,1,8,7,5,6},
{4,3,1,2,7,8,6,5},
{5,6,7,8,2,1,4,3},
{6,5,8,7,1,2,3,4},
{7,8,6,5,3,4,2,1},
{8,7,5,6,4,3,1,2},
}
func main() {
ZD3:=CenterOfG(&g_D3Mul)
DD3:=commutatorOfG(&g_D3Mul)
fmt.Println("ZD3=",ZD3)
fmt.Println("DD3=",DD3)
ZD4:=CenterOfG(&g_D4Mul)
DD4:=commutatorOfG(&g_D4Mul)
fmt.Println("ZD4=",ZD4)
fmt.Println("DD4=",DD4)
ZQ8:=CenterOfG(&g_Q8Mul)
DQ8:=commutatorOfG(&g_Q8Mul)
fmt.Println("ZQ8=",ZQ8)
fmt.Println("DQ8=",DQ8)
}