Skip to content

哈希表 - 生命游戏

javascript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// let board = [[0, 1, 0], [0, 0, 1], [1, 1, 1], [0, 0, 0]]
// let board=[[1,1],[1,0]]
let board = [[0]];
let m = board.length;
let n = board[0].length;
let NewBoard = new Array(m).fill(0).map(() => new Array(n).fill(0));
if (board.length === 1) {
    console.log(board);
}
const LiveNumCheck = (num, isLive) => {
    if (isLive) {
        if (num === 2 || num === 3) {
            return 1;
        }
        else {
            return 0;
        }
    }
    else {
        if (num === 3) {
            return 1;
        }
        else {
            return 0;
        }
    }
};
for (let i = 0; i < m; i++) {
    for (let j = 0; j < n; j++) {
        let liveNum = 0;
        if (i === 0) {
            if (j === 0) {
                if (board[i][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j + 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
            else if (j === n - 1) {
                if (board[i][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j - 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
            else {
                if (board[i][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j - 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
        }
        else if (i === m - 1) {
            if (j === 0) {
                if (board[i][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j + 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
            else if (j === n - 1) {
                if (board[i][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j - 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
            else {
                if (board[i][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j + 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
        }
        else {
            if (j === 0) {
                if (board[i][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j + 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
            else if (j === n - 1) {
                if (board[i - 1][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
            else {
                if (board[i][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j + 1] === 1) {
                    liveNum++;
                }
                if (board[i - 1][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i + 1][j - 1] === 1) {
                    liveNum++;
                }
                if (board[i][j - 1] === 1) {
                    liveNum++;
                }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j]);
            }
        }
    }
}
board = NewBoard;
console.log(board);
typescript
// let board = [[0, 1, 0], [0, 0, 1], [1, 1, 1], [0, 0, 0]]
// let board=[[1,1],[1,0]]
let board=[[0]]
let m = board.length
let n = board[0].length
let NewBoard:number[][]  = new Array(m).fill(0).map(() =>  new Array(n).fill(0) )

if(board.length === 1){
    console.log(board)
}

const LiveNumCheck=(num:number, isLive:number)=>{
    if (isLive) {
        if (num === 2 || num === 3) {
            return 1
        } else {
            return 0
        }
    } else {
        if (num === 3) {
            return 1
        } else {
            return 0
        }
    }

}
for (let i = 0; i < m; i++) {
    for (let j = 0; j < n; j++) {
        let liveNum = 0
        if (i === 0) {
            if (j === 0) {
                if (board[i][j + 1] === 1) { liveNum++ }
                if (board[i + 1][j] === 1) { liveNum++ }
                if (board[i + 1][j + 1] === 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])


            } else if (j === n - 1) {
                if (board[i][j - 1] === 1) { liveNum++ }
                if (board[i + 1][j] === 1) { liveNum++ }
                if (board[i + 1][j - 1] === 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])

            } else {
                if (board[i][j + 1] === 1) { liveNum++ }
                if (board[i][j - 1] === 1) { liveNum++ }
                if (board[i + 1][j] === 1) { liveNum++ }
                if (board[i + 1][j + 1] === 1) { liveNum++ }
                if (board[i + 1][j - 1 ]=== 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])

            }
        } else if (i === m - 1) {
            if (j === 0) {
                if (board[i][j + 1] === 1) { liveNum++ }
                if (board[i - 1][j] === 1) { liveNum++ }
                if (board[i - 1][j + 1] === 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])


            } else if (j === n - 1) {
                if (board[i][j - 1] === 1) { liveNum++ }
                if (board[i - 1][j] === 1) { liveNum++ }
                if (board[i - 1][j - 1] === 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])
            } else {
                if (board[i][j - 1] === 1) { liveNum++ }
                if (board[i - 1][j - 1] === 1) { liveNum++ }
                if (board[i][j + 1] === 1) { liveNum++ }
                if (board[i - 1][j] === 1) { liveNum++ }
                if (board[i - 1][j + 1] === 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])

            }

        } else {

            if (j === 0) {

                if (board[i][j + 1] === 1) { liveNum++ }
                if (board[i - 1][j] === 1) { liveNum++ }
                if (board[i + 1][j] === 1) { liveNum++ }
                if (board[i - 1][j + 1] === 1) { liveNum++ }
                if (board[i + 1][j + 1] === 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])

            } else if (j === n - 1) {

                if (board[i - 1][j - 1] === 1) { liveNum++ }
                if (board[i + 1][j - 1] === 1) { liveNum++ }
                if (board[i][j - 1] === 1) { liveNum++ }
                if (board[i - 1][j] === 1) { liveNum++ }
                if (board[i + 1][j] === 1) { liveNum++ }
                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])

            } else {
                if (board[i][j + 1] === 1) { liveNum++ }
                if (board[i - 1][j] === 1) { liveNum++ }
                if (board[i + 1][j] === 1) { liveNum++ }
                if (board[i - 1][j + 1] === 1) { liveNum++ }
                if (board[i + 1][j + 1] === 1) { liveNum++ }
                if (board[i - 1][j - 1] === 1) { liveNum++ }
                if (board[i + 1][j - 1] === 1) { liveNum++ }
                if (board[i][j - 1] === 1) { liveNum++ }

                NewBoard[i][j] = LiveNumCheck(liveNum, board[i][j])

            }

        }


    }
}
board = NewBoard

console.log(board)

源码地址