-
Notifications
You must be signed in to change notification settings - Fork 7
/
289-Game-of-Life.js
40 lines (34 loc) · 1.05 KB
/
289-Game-of-Life.js
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
/**
* @param {number[][]} board
* @return {void} Do not return anything, modify board in-place instead.
*/
const gameOfLife = (board) => {
const countAliveNeibors = (row, col, arr) => {
let count = 0;
for (let i = -1; i <= 1; i++) {
for (let j = -1; j <= 1; j++) {
if (i === 0 && j === 0) {
continue;
}
if (arr[row + i] !== undefined) {
if (arr[row + i][col + j] === 1) {
count++;
}
}
}
}
return count;
};
const prevBoard = board.map((el) => [...el]);
for (let i = 0; i < prevBoard.length; i++) {
for (let j = 0; j < prevBoard[i].length; j++) {
const cell = prevBoard[i][j];
const liveNeibors = countAliveNeibors(i, j, prevBoard);
if ((cell && liveNeibors === 2) || liveNeibors === 3) {
board[i][j] = 1;
} else {
board[i][j] = 0;
}
}
}
};