编写一个函数 is_magic_square(grid),该函数接收一个3x3的二维列表 grid 作为参数,判断这个矩阵是否为罗素幻方。罗素幻方是指一个3x3的矩阵,其中每个数字都是1到9之间的一个唯一数字,并且每一行、每一列以及两条对角线的和都为15且都相等。
时间: 2024-12-24 14:28:44 浏览: 5
编写is_magic_square函数的Python实现可以如下:
```python
def is_magic_square(grid):
# 检查矩阵维度是否为3x3
if len(grid) != 3 or not all(len(row) == 3 for row in grid):
return False
# 计算每行、每列以及对角线的总和
row_sums = [sum(row) for row in grid]
col_sums = [sum(col) for col in zip(*grid)]
diag_sum1 = sum(grid[i][i] for i in range(3))
diag_sum2 = sum(grid[i][2-i] for i in range(3))
# 判断所有和是否相等且等于15
target_sum = 15
if any(s != target_sum for s in row_sums + col_sums + [diag_sum1, diag_sum2]):
return False
# 验证数字的独特性
num_set = set()
for row in grid:
for num in row:
if num not in num_set:
num_set.add(num)
else:
return False
return True
# 示例:
grid1 = [[4, 9, 2], [3, 5, 7], [8, 1, 6]]
print(is_magic_square(grid1)) # 输出:True
grid2 = [[1, 2, 3], [4, 5, 6], [7, 8, 0]] # 0不在1-9范围内
print(is_magic_square(grid2)) # 输出:False
```
阅读全文