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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| package main
import ( "bufio" "fmt" "io" "os" "strconv" "strings" )
type Node struct { row int col int val int }
func main() { var chessMap [8][8]int chessMap[1][1] = 1 chessMap[2][2] = 2 chessMap[3][3] = 3
for _, v := range chessMap { for _, v2 := range v { fmt.Printf("%d\t", v2) } fmt.Println() }
var sparseArr []Node node := Node{ row: 8, col: 8, val: 0, } sparseArr = append(sparseArr, node) for i, v := range chessMap { for j, v2 := range v { if v2 != 0 { node := Node{ row: i, col: j, val: v2, } sparseArr = append(sparseArr, node) } } }
file, err := os.OpenFile("chess_data.txt", os.O_CREATE|os.O_WRONLY, 0666) if err != nil { fmt.Println("open file failed, err:", err) return }
for _, v := range sparseArr { file.WriteString(fmt.Sprintf("%d %d %d\n", v.col, v.row, v.val))
} file.Close()
file, err = os.OpenFile("chess_data.txt", os.O_CREATE|os.O_RDONLY, 0666) defer file.Close() var sparseArr2 []Node reader := bufio.NewReader(file) for { line, err := reader.ReadString('\n') if err == io.EOF { if len(line) != 0 { fmt.Println(line) } fmt.Println("read file complete.") break } if err != nil { fmt.Println("read file failed. err: ", err) return } lineSlice := strings.Split(strings.Replace(line, "\n", "", -1), " ") node := Node{} for i, num := range lineSlice { n, err := strconv.ParseInt(num, 10, 32) if err != nil { fmt.Println(err) } if i == 0 { node.col = int(n) } else if i == 1 { node.row = int(n) } else { node.val = int(n) } } sparseArr2 = append(sparseArr2, node) }
var chessMap2 [8][8]int for i, v := range sparseArr2 { if i == 0 { continue } chessMap2[v.col][v.row] = v.val }
for _, v := range chessMap2 { for _, v2 := range v { fmt.Printf("%d\t", v2) } fmt.Println() } }
|