Skip to content

Commit d774569

Browse files
committed
perf: reduce comparison
1 parent c80872f commit d774569

1 file changed

Lines changed: 34 additions & 39 deletions

File tree

src/iframe/life-game.js

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -186,45 +186,40 @@ function generationChange(num) {
186186
}
187187

188188
function progressBoard() {
189-
const newBoard = structuredClone(board);
190-
for (let i = 0; i < boardSize; i++) {
191-
for (let j = 0; j < boardSize; j++) {
192-
//周囲のマスに黒マスが何個あるかを計算(aroundに格納)↓
193-
let around = 0;
194-
let tate = [0];
195-
let yoko = [0];
196-
if (i === 0) {
197-
tate = [0, 1];
198-
}
199-
if (i === boardSize - 1) {
200-
tate = [0, -1];
201-
}
202-
if (0 < i && i < boardSize - 1) {
203-
tate = [-1, 0, 1];
204-
}
205-
if (j === 0) {
206-
yoko = [0, 1];
207-
}
208-
if (j === boardSize - 1) {
209-
yoko = [0, -1];
210-
}
211-
if (0 < j && j < boardSize - 1) {
212-
yoko = [-1, 0, 1];
213-
}
214-
for (let ii = 0; ii < tate.length; ii++) {
215-
for (let jj = 0; jj < yoko.length; jj++) {
216-
if (tate[ii] !== 0 || yoko[jj] !== 0) {
217-
around += board[i + tate[ii]][j + yoko[jj]] ? 1 : 0;
218-
}
219-
}
220-
}
221-
//↑周囲のマスに黒マスが何個あるかを計算(aroundに格納)
222-
newBoard[i][j] = isNextAlive(around, board[i][j]);
223-
}
224-
}
225-
board = newBoard;
226-
generationChange(generationFigure + 1);
227-
rerender();
189+
const newBoard = structuredClone(board);
190+
for (let i = 0; i < boardSize; i++) {
191+
for (let j = 0; j < boardSize; j++) {
192+
//周囲のマスに黒マスが何個あるかを計算(aroundに格納)↓
193+
let around = 0;
194+
let tate, yoko;
195+
if (i === 0) {
196+
tate = [0, 1];
197+
} else if (i === boardSize - 1) {
198+
tate = [0, -1];
199+
} else {
200+
tate = [-1, 0, 1];
201+
}
202+
if (j === 0) {
203+
yoko = [0, 1];
204+
} else if (j === boardSize - 1) {
205+
yoko = [0, -1];
206+
} else {
207+
yoko = [-1, 0, 1];
208+
}
209+
for (let ii = 0; ii < tate.length; ii++) {
210+
for (let jj = 0; jj < yoko.length; jj++) {
211+
if (tate[ii] !== 0 || yoko[jj] !== 0) {
212+
around += board[i + tate[ii]][j + yoko[jj]] ? 1 : 0;
213+
}
214+
}
215+
}
216+
//↑周囲のマスに黒マスが何個あるかを計算(aroundに格納)
217+
newBoard[i][j] = isNextAlive(around, board[i][j]);
218+
}
219+
}
220+
board = newBoard;
221+
generationChange(generationFigure + 1);
222+
rerender();
228223
}
229224

230225
//イベント

0 commit comments

Comments
 (0)