package main
import (
"encoding/json"
"fmt"
"os"
)
type sparseNode struct {
Row int
Col int
Val int
}
type unSparseNode struct {
Row int
Col int
Val int
}
func main(){
var arr [11][11]int
arr[1][2] = 1
arr[2][3] = 2
for _, v1 := range arr{
for _, v2 := range v1{
fmt.Printf("%d ", v2)
}
fmt.Println()
}
var sparseArr []sparseNode
valNode := sparseNode{
Row: 11,
Col: 11,
Val: 0,
}
sparseArr = append(sparseArr, valNode)
for i, v1 := range arr{
for j, v2 := range v1{
if v2 != 0{
valNode := sparseNode{
Row: i,
Col: j,
Val: v2,
}
sparseArr = append(sparseArr, valNode)
}
}
}
for _, v := range sparseArr{
fmt.Printf("%d %d %d\n", v.Row, v.Col, v.Val)
}
bytes, err := json.Marshal(&sparseArr)
if err != nil {
panic(err)
}
fmt.Println(string(bytes))
w, err := os.Create("sparseArr.json")
if err != nil {
panic(err)
}
defer w.Close()
_, err = w.Write(bytes)
if err != nil {
panic(err)
}
r, err := os.Open("sparseArr.json")
if err != nil {
panic(err)
}
defer r.Close()
fileInfo, err := r.Stat()
if err != nil {
panic(err)
}
buf := make([]byte, fileInfo.Size())
_, err = r.Read(buf)
if err != nil {
panic(err)
}
var unSparseArr []unSparseNode
err = json.Unmarshal(buf, &unSparseArr)
if err != nil {
panic(err)
}
fmt.Println(unSparseArr)
unArr := make([][11]int, unSparseArr[0].Row)
for i, v1 := range unSparseArr{
if i != 0 {
unArr[v1.Row][v1.Col] = v1.Val
}
}
for _, v1 := range unArr{
for _, v2 := range v1{
fmt.Printf("%d ", v2)
}
fmt.Println()
}
}