MCPcopy Create free account
hub / github.com/austingebauer/go-leetcode / gameOfLife

Function gameOfLife

game_of_life_289/solution.go:3–29  ·  view source on GitHub ↗
(board [][]int)

Source from the content-addressed store, hash-verified

1package game_of_life_289
2
3func gameOfLife(board [][]int) {
4 for r := 0; r < len(board); r++ {
5 for c := 0; c < len(board[r]); c++ {
6 cs := board[r][c]
7 liveNeighbors := getLiveNeighbors(board, r, c, len(board), len(board[r]))
8
9 if cs == 0 && liveNeighbors == 3 {
10 // Rule 4: Was a 0 (dead) and going to 1 (alive)
11 board[r][c] = -2
12 } else if cs == 1 && (liveNeighbors < 2 || liveNeighbors > 3) {
13 // Rule 1,3: Was a 1 (live) and going to 0 (dead)
14 board[r][c] = -1
15 }
16 }
17 }
18
19 // Swap -1 (1 -> 0) and -2 (0 -> 1) in place
20 for r := 0; r < len(board); r++ {
21 for c := 0; c < len(board[r]); c++ {
22 if board[r][c] == -1 {
23 board[r][c] = 0
24 } else if board[r][c] == -2 {
25 board[r][c] = 1
26 }
27 }
28 }
29}
30
31func getLiveNeighbors(board [][]int, r, c, rows, cols int) int {
32 cnt := 0

Callers 1

Test_gameOfLifeFunction · 0.85

Calls 1

getLiveNeighborsFunction · 0.85

Tested by 1

Test_gameOfLifeFunction · 0.68