首页 > 其他分享 >js.生命游戏

js.生命游戏

时间:2024-10-10 18:21:59浏览次数:8  
标签:生命 return 游戏 arr 细胞 js num let board

链接:

289. 生命游戏 - 力扣(LeetCode)

题目:

根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。

给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

  1. 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
  2. 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
  3. 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
  4. 如果死细胞周围正好有三个活细胞,则该位置死细胞复活;

下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。

示例 1:

输入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]
输出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]

示例 2:

输入:board = [[1,1],[1,0]]
输出:[[1,1],[1,1]]

提示:

  • m == board.length
  • n == board[i].length
  • 1 <= m, n <= 25
  • board[i][j] 为 0 或 1

代码:

 

/**

 * @param {number[][]} board

 * @return {void} Do not return anything, modify board in-place instead.

 */

var gameOfLife = function(board) {

    let m = board.length,n = board[0].length

    let flag

    let arr = Array.from({ length: m }, () => Array.from({ length: n }, () => 0))

        for(let i = 0 ; i<m ; i++ ){

            for(let j = 0 ; j<n ; j++){

                if(arr[i][j]==1) continue

                if(isChange(i,j,board)){

                    arr[i][j] = 1

                }

            }

        }

        for(let i = 0 ; i<m ; i++ ){

            for(let j = 0 ; j<n ; j++){

                if(arr[i][j]==1) board[i][j] = board[i][j]==0?1:0

            }

        }        

};

// 判断是否修改值

let isChange = function (i,j,board){

    let a = [[-1,-1],[-1,0],[-1,1],[0,1],[1,1],[1,0],[1,-1],[0,-1]]

    let x,y,num = 0

    for(let k = 0 ; k < 8 ; k++ ){

        x = i + a[k][0]

        y = j + a[k][1]

        if(x>=0&&x<board.length&&y>=0&&y<board[0].length){

            if(board[x][y]==1) num++

        }

    }

    if(board[i][j]==1){

        if(!(num==2||num==3)) return true

    }else{

        if(num==3) return true

    }

    return false

}

标签:生命,return,游戏,arr,细胞,js,num,let,board
From: https://blog.csdn.net/qq_62541773/article/details/142797534

相关文章

  • js-存在重复元素
    219.存在重复元素II给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i]==nums[j] 且 abs(i-j)<=k 。如果存在,返回 true ;否则,返回 false 。代码:第一次尝试:/** *@param{number[]}nums *@param......
  • 【玩转 JS 函数式编程_010】3.2 JS 函数式编程筑基之:以函数式编程的方式活用函数(上)
    写在前面按照惯例,过长的篇幅分开介绍,本篇为JavaScript函数式编程核心基础的第二部分——以函数式编程的方式活用函数的上篇,分别介绍了JS函数在排序、回调、Promise期约、以及连续传递等应用场景下的用法演示。和之前章节相比难度又有一定的提升。准备好了吗?3.2.以......
  • 《大侠立志传》游戏闪退未响应提示“找不到cv210.dll”文件该怎么处理?大侠立志传游戏
    《大侠立志传》以其丰富的剧情和独特的玩法吸引着众多玩家。然而,启动游戏时若出现闪退未响应且提示“找不到cv210.dll”文件,着实令人苦恼。遇到这种情况该如何处理呢?下面为大家提供解决办法。cv210.dll的功能介绍cv210.dll是VisualC++RedistributablePackage的一部分,特别......
  • 《神之亵渎2》游戏启动时闪退未响应弹窗“找不到visa32.dll”文件该怎么修复?神之亵渎2
    《神之亵渎2》以其独特的艺术风格和深度的剧情备受玩家瞩目。但启动游戏时出现闪退未响应且弹窗提示“找不到visa32.dll”文件,实在令人困扰。那么,该如何修复这个问题呢?本篇将为大家带来《神之亵渎2》游戏启动时闪退未响应弹窗“找不到visa32.dll”文件该怎么修复的内容,感兴趣的......
  • 《星球大战绝地:幸存者》游戏启动时未响应弹窗“找不到mfc110u.dll”文件该怎么解决?星
    《星球大战绝地:幸存者》以其精彩的剧情和刺激的战斗吸引着众多玩家。然而,启动游戏时若出现未响应且弹窗提示“找不到mfc110u.dll”文件,着实令人苦恼。遇到这种情况该如何解决呢?本篇将为大家带来《星球大战绝地:幸存者》游戏启动时未响应弹窗“找不到mfc110u.dll”文件该怎么解决......
  • 基于nodejs+vue疫情防控管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景近年来,全球范围内频繁爆发的疫情给社会带来了前所未有的挑战,特别是在校园这一人员密集且流动性大的环境中,疫情防控工作显得尤为重要。随着信息技术的飞速发......
  • 基于nodejs+vue疫情防控管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在新冠疫情全球蔓延的背景下,校园作为人员密集、流动性大的特殊场所,疫情防控工作显得尤为重要。随着疫情形势的不断变化,传统的人工管理模式已难以满足高效、......
  • 基于nodejs+vue疫情防控管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景近年来,全球范围内频繁爆发的疫情给社会生活和经济发展带来了巨大挑战。特别是在校园环境中,人员密集、流动性大,疫情防控难度尤为突出。为了确保师生的健康安......
  • Nuxt.js 应用中的 page:transition:finish 钩子详解
    title:Nuxt.js应用中的page:transition:finish钩子详解date:2024/10/10updated:2024/10/10author:cmdragonexcerpt:page:transition:finish是Nuxt.js中的一个事件钩子,专门用于处理页面过渡效果结束后的逻辑。这一钩子在页面过渡的onAfterLeave事件之后被调用,允......
  • 基于Node.js+vue高校宿舍分配管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着高校招生规模的不断扩大,学生宿舍的管理变得日益复杂。传统的人工分配和管理方式不仅效率低下,而且容易出错,无法满足现代高校宿舍管理的需求。为了提升宿......