Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
56
Task/Multi-dimensional-array/Go/multi-dimensional-array.go
Normal file
56
Task/Multi-dimensional-array/Go/multi-dimensional-array.go
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
type md struct {
|
||||
dim []int
|
||||
ele []float64
|
||||
}
|
||||
|
||||
func newMD(dim ...int) *md {
|
||||
n := 1
|
||||
for _, d := range dim {
|
||||
n *= d
|
||||
}
|
||||
return &md{append([]int{}, dim...), make([]float64, n)}
|
||||
}
|
||||
|
||||
func (m *md) index(i ...int) (x int) {
|
||||
for d, dx := range m.dim {
|
||||
x = x*dx + i[d]
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (m *md) at(i ...int) float64 {
|
||||
return m.ele[m.index(i...)]
|
||||
}
|
||||
|
||||
func (m *md) set(x float64, i ...int) {
|
||||
m.ele[m.index(i...)] = x
|
||||
}
|
||||
|
||||
func (m *md) show(i ...int) {
|
||||
fmt.Printf("m%d = %g\n", i, m.at(i...))
|
||||
}
|
||||
|
||||
func main() {
|
||||
m := newMD(5, 4, 3, 2)
|
||||
m.show(4, 3, 2, 1)
|
||||
m.set(87, 4, 3, 2, 1)
|
||||
m.show(4, 3, 2, 1)
|
||||
|
||||
for i := 0; i < m.dim[0]; i++ {
|
||||
for j := 0; j < m.dim[1]; j++ {
|
||||
for k := 0; k < m.dim[2]; k++ {
|
||||
for l := 0; l < m.dim[3]; l++ {
|
||||
x := m.index(i, j, k, l)
|
||||
m.set(float64(x)+.1, i, j, k, l)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fmt.Println(m.ele[:10])
|
||||
fmt.Println(m.ele[len(m.ele)-10:])
|
||||
m.show(4, 3, 2, 1)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue