original.name="BoolList_Valid_4" ====== >>> main.whiley type Board is (bool[][] flags) where |flags| == 3 where all { k in 0 .. |flags| | |flags[k]| == 3 } function update(Board board) -> Board: Board nboard = board int i = 0 while i < 3 where i >= 0: int j = 0 while j < 3 where j >= 0: int c = countLiving(board, i, j) if board[i][j]: switch c: case 0, 1: nboard[i][j] = false case 2, 3: j = j + 1 i = i + 1 return nboard function countLiving(Board board, int row, int col) -> int: int count = isAlive(board, row - 1, col - 1) count = count + isAlive(board, row - 1, col) count = count + isAlive(board, row - 1, col + 1) count = count + isAlive(board, row, col - 1) count = count + isAlive(board, row, col + 1) count = count + isAlive(board, row + 1, col - 1) count = count + isAlive(board, row + 1, col) count = count + isAlive(board, row + 1, col + 1) return count function isAlive(Board board, int row, int col) -> int: int nrows = |board| if (row < 0) || (row >= nrows): return 0 int ncols = |board[0]| if (col < 0) || (col >= ncols): return 0 if board[row][col]: return 1 else: return 0 public export method test() : Board board = [[false, true, false], [false, true, false], [false, true, false]] Board nboard = update(board) assume board == [[false, true, false], [false, true, false], [false, true, false]] assume nboard == [[false, false, false], [false, true, false], [false, false, false]] ---