新年算法题:矩阵对称性检测
引言:
2025年的新年钟声即将敲响,作为一名算法爱好者,你将帮助圣诞老人完成一项重要任务——判断新年的密码是否具有对称性。这个问题简单但充满趣味,快来挑战吧!
题目背景
在“极光之城”,圣诞老人准备在新年的钟声敲响时点亮极光。为了启动装置,他需要输入一个密码。密码的输入面板是一个由3x3按钮组成的矩阵。矩阵中每个按钮的状态可能是x
(按钮被按下)或.
(按钮未被按下)。
传说中,只有对称的密码才能触发极光,点亮夜空的烟花秀。你的任务是判断输入的密码矩阵是否具有中心对称性。
任务描述
输入格式:
-
一个 3x3 的字符矩阵,每行包含3个字符(
x
或.
)。
输出格式:
-
如果矩阵是中心对称的,输出:
NEW YEAR CELEBRATION!
; -
否则,输出:
TRY AGAIN!
。
对称性定义: 矩阵的任意一个位置 (i, j)
的状态必须和它中心对称位置 (2 - i, 2 - j)
的状态一致。
示例
输入:
x.x
.x.
x.x
输出:
NEW YEAR CELEBRATION!
解释: 矩阵以中心为对称点,符合条件。
输入:
x.x
x..
.x.
输出:
TRY AGAIN!
解释: 矩阵不符合对称性条件。
Python代码实现
以下是实现该题的Python代码:
def is_symmetric(matrix):
# 检查每个位置的字符是否和对称位置的字符一致
for i in range(3):
for j in range(3):
if matrix[i][j] != matrix[2 - i][2 - j]:
return False
return True
# 输入3x3矩阵
matrix = []
print("Enter the 3x3 password matrix (use 'x' for pressed and '.' for unpressed):")
for _ in range(3):
row = input().strip()
matrix.append(row)
# 判断是否对称,并输出结果
if is_symmetric(matrix):
print("NEW YEAR CELEBRATION!")
else:
print("TRY AGAIN!")
代码解析
-
核心函数
is_symmetric
:-
遍历矩阵的每一个元素
(i, j)
; -
检查
(i, j)
是否与中心对称位置(2 - i, 2 - j)
的值相等; -
如果存在不匹配的情况,直接返回
False
; -
如果所有元素匹配,则返回
True
。
-
-
主程序逻辑:
-
提示用户输入 3x3 矩阵;
-
将每行输入存入
matrix
列表; -
调用
is_symmetric
函数判断是否符合对称性; -
根据返回值输出对应结果。
-
运行说明
运行程序后,输入 3 行,每行包含 3 个字符,表示矩阵的密码。例如:
x.x
.x.
x.x
程序会输出:
NEW YEAR CELEBRATION!
题目拓展
-
矩阵规模拓展:可以尝试支持更大的矩阵(如 5x5、7x7),判断其是否具有中心对称性。
-
图形可视化:将矩阵密码的对称性通过图形界面展示,增强趣味性。
-
节日元素增强:将判断成功后的输出改为节日图案或文字动画。
总结
这是一个简单的算法题,但通过节日背景赋予了它更多趣味性。通过解决该问题,不仅可以磨炼对矩阵的遍历和索引操作,还能提升对对称性概念的理解。希望大家通过这道题感受到编程的乐趣,也祝大家新年快乐!
快来试试吧!用你的代码点亮新年的极光! 🌟