2 条题解

  • 0
    @ 2026-3-26 15:35:14

    NUMPY072 题解:生命游戏一步迭代

    题目

    实现生命游戏的一步迭代。

    生命游戏规则

    1. 活细胞(值为 1)周围少于 2 个或多余 3 个活邻居 → 死亡
    2. 活细胞周围恰好 2 或 3 个活邻居 → 继续存活
    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)
    

    代码详解

    • N\texttt{N} —— 计算每个位置的邻居数量
    • birth\texttt{birth} —— 满足出生条件的死细胞
    • survive\texttt{survive} —— 满足存活条件的活细胞
    • Z[...] = 0\texttt{Z[...] = 0} —— 先全部设为死
    • Z[1:-1,1:-1][birth | survive] = 1\texttt{Z[1:-1,1:-1][birth | survive] = 1} —— 设置存活/出生的细胞
    • 0
      @ 2026-3-26 15:34:39

      NUMPY072 题解:生命游戏一步迭代

      题目

      实现生命游戏的一步迭代。

      生命游戏规则

      1. 活细胞(值为 1)周围少于 2 个或多余 3 个活邻居 → 死亡
      2. 活细胞周围恰好 2 或 3 个活邻居 → 继续存活
      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)
      

      代码详解

      • N\texttt{N} —— 计算每个位置的邻居数量
      • birth\texttt{birth} —— 满足出生条件的死细胞
      • survive\texttt{survive} —— 满足存活条件的活细胞
      • Z[...] = 0\texttt{Z[...] = 0} —— 先全部设为死
      • Z[1:-1,1:-1][birth | survive] = 1\texttt{Z[1:-1,1:-1][birth | survive] = 1} —— 设置存活/出生的细胞
      • 1

      信息

      ID
      379
      时间
      1000ms
      内存
      256MiB
      难度
      (无)
      标签
      (无)
      递交数
      0
      已通过
      0
      上传者