optimize code

This commit is contained in:
ston1th 2021-05-27 07:39:32 +02:00
commit 8f465a4a50
2 changed files with 23 additions and 18 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
gol

40
main.go
View file

@ -11,10 +11,13 @@ import (
)
const (
// Grid size
//size = 150
size = 30
// Image zoom value
zoom = 8
fps = 2
// Generations per second
gps = 2
)
type Grid struct {
@ -111,18 +114,17 @@ func max(i int) int {
return i
}
func (g *GOL) Check(x, y int) {
func (g *GOL) check(x, y int) {
n := 0
for i := min(x - 1); i <= max(x+1); i++ {
for j := min(y - 1); j <= max(y+1); j++ {
if g.grid1.G[i][j] {
if !(i == x && j == y) {
n++
}
n++
}
}
}
if g.grid1.G[x][y] {
n--
switch n {
case 0, 1:
g.grid2.G[x][y] = false
@ -138,7 +140,7 @@ func (g *GOL) Check(x, y int) {
}
}
func (g *GOL) Grid() (gr *Grid) {
func (g *GOL) grid() (gr *Grid) {
gr = new(Grid)
for i := 0; i < size; i++ {
gr.G[i] = g.grid1.G[i]
@ -147,6 +149,15 @@ func (g *GOL) Grid() (gr *Grid) {
return
}
func (g *GOL) Calc() (gr *Grid) {
for i := 0; i < size; i++ {
for j := 0; j < size; j++ {
g.check(i, j)
}
}
g.Gen++
return g.grid()
}
func main() {
gol := NewGOL()
gc := make(chan *Grid, 10)
@ -159,8 +170,7 @@ func main() {
case img = <-ic:
default:
}
err := jpeg.Encode(os.Stdout, img, &o)
if err == nil {
if jpeg.Encode(os.Stdout, img, &o) == nil {
os.Stdout.Sync()
}
time.Sleep(time.Millisecond * 16)
@ -170,13 +180,13 @@ func main() {
s := size * zoom
r := image.Rect(0, 0, s, s)
for {
img := image.NewNRGBA(r)
img := image.NewGray(r)
grid := <-gc
x := 0
y := 0
var c color.Color
for i := 0; i < size; i++ {
for j := 0; j < size; j++ {
var c color.Color
if grid.G[i][j] {
c = color.Black
} else {
@ -197,14 +207,8 @@ func main() {
}()
for {
for i := 0; i < size; i++ {
for j := 0; j < size; j++ {
gol.Check(i, j)
}
}
gc <- gol.Grid()
gol.Gen++
gc <- gol.Calc()
fmt.Fprintf(os.Stderr, "\rGeneration: %d", gol.Gen)
time.Sleep(time.Second / fps)
time.Sleep(time.Second / gps)
}
}