[问答题] 【编程题】 # 背景: “康威生命游戏”由一个二维的平面网格组成。网格内的每个格子都是一个细胞,包括“存活”和“死亡”两种状态。每个细胞的生存状态由周围最多8个邻居的状态决定。详细规则如下: * 当前细胞为存活状态时,当周围的存活细胞低于2个时(不包含2个),该细胞变成死亡状态。(模拟生命数量稀少) * 当前细胞为存活状态时,当周围有2个或3个存活细胞时,该细胞保持原样。 * 当前细胞为存活状态时,当周围有超过3个存活细胞时,该细胞变成死亡状态。(模拟生命数量过多) * 当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态。(模拟繁殖) # 任务: * 实现函数:`private int getNextVal(int[][] arr, int i, int j)`,返回某个元素的生存状态。 * 实现函数:`private int countLivingNeighbors(int[][] arr, int i, int j)`,计算某细胞的存活邻居数量。 初始代码: public class ShowMeBug {     public final int[][] arr;     public ShowMeBug(int[][] arr) {         this.arr = arr;     }     public static void main(String[] args) {         int[][] arr = new int[][]{                 {0, 0, 0},                 {1, 1, 1},                 {0, 0, 0}         };         final ShowMeBug showMeBug = new ShowMeBug(arr);         showMeBug.updateNextState(arr);         showMeBug.printState();     }     /**      * 输出当前生存状态到控制台      *      */     public void printState() {         int M = arr.length;         int N = arr[0].length;         for (int i = 0; i < M; i++) {             for (int j = 0; j < N; j++) {                 System.out.print(arr[i][j]);                 System.out.print("" "");             }             System.out.println();         }     }     /**      * 更新arr下个tick的生存状态      *      * @param arr 当前状态下的数组      */     public void updateNextState(int[][] arr) {         int M = arr.length;         int N = arr[0].length;         for (int i = 0; i < M; i++) {             for (int j = 0; j < N; j++) {                 arr[i][j] = getNextVal(arr, i, j);             }         }     }     /**      * 计算某细胞下个tick的状态      *      * @param arr 当前状态下的数组      * @param i   行索引      * @param j   列索引      * @return 生存返回1,否则返回0      */     private int getNextVal(int[][] arr, int i, int j) {         int nextVal = 0;         //TODO:请完善该函数,要求:需要调用countLivingNeighbors         return nextVal;     }     /**      * 计算某细胞的存活邻居数量      *      * @param arr 当前状态下的数组      * @param i   行索引      * @param j   列索引      * @return 该元素存活的邻居数量      */     private int countLivingNeighbors(int[][] arr, int i, int j) {         int count = 0;         //TODO:请完善该函数         return count;     } }