289. 生命游戏 Python

news2025/1/10 20:53:24

文章目录

  • 一、题目描述
      • 示例 1
      • 示例 2
  • 二、代码
  • 三、解题思路


一、题目描述

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

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

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

下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 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

二、代码

代码如下:

class Solution:
    def gameOfLife(self, board: List[List[int]]) -> None:
        """
        Do not return anything, modify board in-place instead.
        """
        r = len(board)
        c = len(board[0])
        board1 = [[board[i][j] for j in range(c)] for i in range(r)]

        def panduan(i,j):
            count = 0
            if i-1 >=0 and board1[i-1][j] == 1: # 上
                count += 1
            if i+1<=r-1 and board1[i+1][j] == 1: # 下
                count += 1
            if j-1>=0 and board1[i][j-1] == 1: # 左
                count += 1
            if j+1<=c-1 and board1[i][j+1] == 1:  # 右
                count += 1
            if i-1 >=0 and j+1<=c-1 and board1[i-1][j+1] == 1: # 右上
                count += 1
            if j-1 >=0 and i-1 >=0 and board1[i-1][j-1] == 1: # 左上
                count += 1
            if i+1<=r-1 and j+1<=c-1 and board1[i+1][j+1] == 1: # 右下
                count += 1
            if i+1<=r-1 and j-1>=0 and board1[i+1][j-1] == 1: # 左下
                count += 1
            if board1[i][j] == 0 and count == 3:
                board[i][j] = 1
            if board1[i][j] == 1:
                if count < 2 or count > 3:
                    board[i][j] = 0

        for i in range(r):
            for j in range(c):
                panduan(i,j)

三、解题思路

本题解题思路是遍历board中每一个元素,判断该元素的四周(8个位置)处的活细胞个数,然后根据当前活细胞个数来确定是否更改当前细胞的状态。需要注意的点在于,由于题意中给出这些细胞的出生和死亡是同时发生的,所以表示所有细胞的改变都需要根据最开始board中的情况来进行,所以最开始时需要复制board来作为后面的判断标准。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

以“大数据+云服务”为核心的SaaS云平台 智慧校园管理平台 教师端、家长端、学生端全套源码

智慧校园全套源码 电子班牌系统源码 家校互联小程序源码 智慧校园以互联网为基础&#xff0c;以“大数据云服务”为核心&#xff0c;融合校园教学、管理、生活软硬件平台&#xff0c;定义智慧校园新生活。智慧校园管理平台管理者、教师、学生、家长提供一站式智慧校园解决方案…

基于Java+SpringBoot+Vue前后端分离的宠物领养系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 近年来&#xff0c;随…

和鲸ModelWhale与中科可控X系列异构加速服务器完成适配认证,搭载海光芯片,构筑AI算力底座

AIGC 时代&#xff0c;算力作为新型生产力&#xff0c;是国家和企业构建竞争优势的关键。而随着传统计算方式无法满足新时代激增的算力需求&#xff0c;计算场景的多元化和计算应用的复杂化推动了 CPUGPU 异构平台的加速组建。在此全球激烈角逐的大趋势下&#xff0c;我国信创产…

再有国产手机宣布自研操作系统,去美国化成潮流,谷歌自作自受

在小米正在大举宣传自研操作系统之后&#xff0c;日前vivo也宣布将自研操作系统&#xff0c;它们未来的目标都是从兼容安卓到实现真正的独立自主&#xff0c;摆脱对美国谷歌的依赖&#xff0c;实现类似于苹果的封闭系统。 国产手机自研操作系统&#xff0c;首先是考虑到系统的供…

事件知识图谱综述10.17+10.18 弃

事件知识图谱综述 摘要介绍2 什么是事件知识图谱&#xff1a;历史视角2.1 EKG的简要历史2.2 EKG的定义 什么是EKG&#xff1a;本体视角3.1 事件架构归纳 摘要 除了以实体为中心的知识&#xff0c;通常以知识图谱&#xff08;KG&#xff09;的形式组织外&#xff0c;事件也是世…

单身狗1和单身狗2(C语言版)

目录 1. 单身狗1 2. 单身狗2 1. 单身狗1 题目&#xff1a; 一个数组中只有一个数字是出现一次&#xff0c;其他所有数字都出现了两次。 编写一个函数找出这一个只出现一次的数字。 例如&#xff1a;有数组的元素是&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&a…

输入/输出的实用性-SOLIDWORKS 2024新功能

导出为 Extended Reality 您可以将 SOLIDWORKS CAD 文件导出为 .glb 或 .gltf 文件格式。 文件包含以下信息&#xff0c;例如几何体、外观、纹理、动画、运动算例、配置、显示状态、爆炸视图、光源 和元数据。对于大文件&#xff0c;导出支持 Draco&#xff0c;这是 .glb 和 .…

ChatGPT对于留学生论文写作有哪些帮助?

2022年11月&#xff0c;OpenAI公司的智能聊天产品ChatGPT横空出世&#xff0c;并两个月之内吸引了超过1亿用户&#xff0c;打破了TikTok&#xff08;抖音国际版&#xff09;9个月用户破亿的纪录。 划时代的浪潮 ChatGPT的火爆立即引起了全球关注并成为热门话题&#xff0c;它…

Mysql 内外链接,索引,事务,用户管理以及用C语言链接Mysql

文章目录 内外链接索引索引的相关操作全文索引 事务事务的操作事务的隔离级别隔离级别3个记录隐藏列字段 用户管理权限修改 使用C语言链接数据库 内外链接 两张表直接做笛卡尔积为内连接&#xff0c;之前使用的都是内连接 两张表&#xff1a;stu和exam 将两张表进行连接&…

Arya碎碎念 | 我的创作纪念日——写在成为创作者的第1095天

前言 打开博客创作者页面&#xff0c;发现CSDN发送过来一条私信&#xff0c;提醒我3年前发了第一篇博客。3年的时间里&#xff0c;大家都经历了很多事情&#xff0c;疫情 . . . . . 本篇博客是一些碎碎念&#xff0c;作为一个成为1095天创作者的纪念博客。 一、个人优质博客汇…

I2C的硬件实现

因为I2C是同步的&#xff0c;所以相对来说I2C更好用软件来实现&#xff0c;硬件却相对来说没这么好&#xff0c;但是硬件I2C通信也是有其优点的 我们是通过软件写入控制寄存器CR和数据寄存器DR&#xff0c;读取状态寄存器SR来了解外设电路当前处于什么状态&#xff0c;来实现I…

jvm实现的锁优化

目录 轻量级锁 轻量级锁的工作流程 轻量级锁的解锁 偏向锁 偏向锁的流程&#xff1a; 偏向锁和轻量级锁机区别&#xff1a; 其他优化 自旋锁和自适应自旋锁 锁消除 锁粗化 轻量级锁 “轻量级” 是相对于使用操作系统互斥量来实现的传统锁而言的&#xff0c;因此传统的…

Java学习笔记(四)——程序控制结构

一、顺序控制 二、分支控制 &#xff08;一&#xff09;单分支 &#xff08;二&#xff09;双分支 &#xff08;三&#xff09;多分支 &#xff08;四&#xff09;嵌套分支 &#xff08;五&#xff09;switch分支结构 &#xff08;六&#xff09;if和switch的选择 三、循…

Android Studio快速实现Flutter应用的国际化和多语言支持

文章目录 Flutter实现国际化和多语言支持添加依赖库Android Studio 安装flutter Intl插件项目初始化增加语言app中使用国际化在应用中切换语言&#xff1a;运行应用 总结easy_localization 插件intl 包Flutter GetX 包flutter_i18n 插件JSON 文件 Flutter实现国际化和多语言支持…

利用ArcGIS获取每一个冰川的中心位置经纬度坐标:要素转点和要素折点转点的区别

问题概述&#xff1a;下图是天山地区的冰川的分布&#xff0c;我们可以看到每一条冰川是一个面要素&#xff0c;要求得到每一个冰川&#xff08;面要素&#xff09;的中心经纬度坐标。 1.采用要素转点功能 选择工具箱的【数据管理工具】-【要素】-【要素转点】。完成之后再采用…

疯狂堆料!技嘉钛雕Z790 AORUS PRO X主板图赏

技嘉推出了钛雕Z790 AORUS PRO X主板。 现在这款新品已经来到了我们评测室&#xff0c;下面为大家带来图赏。 技嘉钛雕Z790 AORUS PRO X主板采用新一代超耐久显卡插槽&#xff0c;约58KG承重能力、内衬保护显卡PCB。 其采用1812相供电设计&#xff0c;4根双通道DDR5内存插槽&am…

药物滥用第四篇介绍

OXY&#xff1a; 羟考酮&#xff08;Oxycodone&#xff0c;OXY&#xff09;&#xff0c;分子式为C18H21NO4&#xff0c;是一种半合成的蒂巴因衍生物。羟考酮为半合成的纯阿片受体激动药&#xff0c;其作用机制与吗啡相似&#xff0c;主要通过激动中枢神经系统内的阿片受体而起镇…

FastAdmin框架实现数据表的增删改查

目录 简介 增加数据 修改数据 控制器&#xff08;controller&#xff09;代码&#xff1a; 查询数据 控制器&#xff08;controller&#xff09;代码&#xff1a; 模型&#xff08;model&#xff09;代码&#xff1a; 删除数据 控制器&#xff08;controller&#xff0…

2023年农村市场风口新商机:互联网+认养模式商业模式解析

背景&#xff1a;随着城市化进程的不断加快&#xff0c;人们对物质生活的要求和品质日益增高&#xff0c;特别是在疫情过亲身经历过病痛的折磨后&#xff0c;大家对自己的更加爱惜了&#xff0c;今天&#xff0c;微三云营销总监胡佳东发现一套2023年创业新项目新商机&#xff1…

选型销售管理软件要注意哪些问题?

近些年来&#xff0c;创新型企业大量涌现成为国内经济增长的新动能。同时管理者发现很快就遇到了发展瓶颈&#xff0c;为了保证业务的快速开展&#xff0c;引入销售管理软件的需求十分强烈。那么&#xff0c;选型销售管理软件要注意哪些问题? 一、直指痛点的功能 对于多数企…