github.com/gorgonia/agogo@v0.1.1/game/wq/naughty.go (about) 1 package 围碁 2 3 import ( 4 "reflect" 5 "unsafe" 6 7 "github.com/gorgonia/agogo/game" 8 ) 9 10 // makeBoard makes a board of NxN. Additionally, it also returna s 2D iterator 11 func makeBoard(size int) (board []game.Colour, iterator [][]game.Colour) { 12 board = make([]game.Colour, size*size, size*size) 13 iterator = make([][]game.Colour, size) 14 for i := range iterator { 15 start := i * size 16 hdr := &reflect.SliceHeader{ 17 Data: uintptr(unsafe.Pointer(&board[start])), 18 Len: size, 19 Cap: size, 20 } 21 iterator[i] = *(*[]game.Colour)(unsafe.Pointer(hdr)) 22 } 23 return 24 } 25 26 func makeZobristTable(size int) (table []int32, iterator [][]int32) { 27 table = make([]int32, size*size*2, size*size*2) 28 iterator = make([][]int32, size*size, size*size) 29 rowStride := 2 30 for i := range iterator { 31 start := i * rowStride 32 hdr := &reflect.SliceHeader{ 33 Data: uintptr(unsafe.Pointer(&table[start])), 34 Len: rowStride, 35 Cap: rowStride, 36 } 37 iterator[i] = *(*[]int32)(unsafe.Pointer(hdr)) 38 } 39 return 40 }