2 条题解
-
0
NUMPY072 题解:生命游戏一步迭代
题目
实现生命游戏的一步迭代。
生命游戏规则
- 活细胞(值为 1)周围少于 2 个或多余 3 个活邻居 → 死亡
- 活细胞周围恰好 2 或 3 个活邻居 → 继续存活
- 死细胞(值为 0)周围恰好 3 个活邻居 → 复活
代码
import numpy as np n = int(input()) Z = np.array([list(map(int, input().split())) for _ in range(n)]) N = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] + Z[1:-1,0:-2] + Z[1:-1,2:] + Z[2:,0:-2] + Z[2:,1:-1] + Z[2:,2:]) birth = (N==3) & (Z[1:-1,1:-1]==0) survive = ((N==2) | (N==3)) & (Z[1:-1,1:-1]==1) Z[...] = 0 Z[1:-1,1:-1][birth | survive] = 1 print(Z)代码详解
- —— 计算每个位置的邻居数量
- —— 满足出生条件的死细胞
- —— 满足存活条件的活细胞
- —— 先全部设为死
- —— 设置存活/出生的细胞
-
0
NUMPY072 题解:生命游戏一步迭代
题目
实现生命游戏的一步迭代。
生命游戏规则
- 活细胞(值为 1)周围少于 2 个或多余 3 个活邻居 → 死亡
- 活细胞周围恰好 2 或 3 个活邻居 → 继续存活
- 死细胞(值为 0)周围恰好 3 个活邻居 → 复活
代码
import numpy as np n = int(input()) Z = np.array([list(map(int, input().split())) for _ in range(n)]) N = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] + Z[1:-1,0:-2] + Z[1:-1,2:] + Z[2:,0:-2] + Z[2:,1:-1] + Z[2:,2:]) birth = (N==3) & (Z[1:-1,1:-1]==0) survive = ((N==2) | (N==3)) & (Z[1:-1,1:-1]==1) Z[...] = 0 Z[1:-1,1:-1][birth | survive] = 1 print(Z)代码详解
- —— 计算每个位置的邻居数量
- —— 满足出生条件的死细胞
- —— 满足存活条件的活细胞
- —— 先全部设为死
- —— 设置存活/出生的细胞
- 1
信息
- ID
- 379
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者