如何实现数独棋盘指定坐标所在子网格元素提取函数subgrid_values
数独子网格元素提取函数实现
实现思路
- 9x9数独按3行3列划分为9个3x3子网格,首先计算指定坐标所属子网格的边界:子网格起始行号为
(r // 3) * 3,起始列号为(c // 3) * 3,覆盖起始位置往后的3行3列 - 遍历该3x3区域所有元素,过滤掉代表空位的0,收集剩余非零元素即可得到结果
完整代码实现
def subgrid_values(board, r, c): # 计算所属3x3子网格的起始行、起始列 start_r = (r // 3) * 3 start_c = (c // 3) * 3 result = [] # 遍历子网格所有元素 for i in range(start_r, start_r + 3): for j in range(start_c, start_c + 3): if board[i][j] != 0: result.append(board[i][j]) return result
测试验证
# 题目给出的数独棋盘 big = [ [0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 0, 0, 7, 8, 9, 0, 0, 0], [7, 8, 0, 0, 0, 0, 0, 5, 6], [0, 2, 0, 3, 6, 0, 8, 0, 0], [0, 0, 5, 0, 0, 7, 0, 1, 0], [8, 0, 0, 2, 0, 0, 0, 0, 5], [0, 0, 1, 6, 4, 0, 9, 7, 0], [0, 0, 0, 9, 0, 0, 0, 0, 0], [0, 0, 0, 0, 3, 0, 0, 0, 2] ] print(subgrid_values(big, 4, 5)) # 输出:[3, 6, 7, 2],和预期结果一致
内容的提问来源于stack exchange,提问作者Bryan Hii
相关产品推荐
相关产品推荐

