如何检测4x4矩阵是否为幻方?Python实现Lo Shu幻方校验
洛书幻方检测代码实现
判定规则说明
洛书幻方(Lo Shu Magic Square)是特指3阶幻方,满足以下全部条件才判定为合法:
- 矩阵维度固定为3行3列
- 矩阵包含的元素恰好是1-9的不重复整数
- 所有行、所有列、两条对角线的元素累加和均为15
完整可运行代码
def is_lo_shu_magic_square(square): # 校验行数是否为3 if len(square) != 3: return False # 校验每行长度是否为3 for row in square: if len(row) != 3: return False # 校验元素为1-9且无重复 all_nums = [] for row in square: all_nums.extend(row) if sorted(all_nums) != list(range(1, 10)): return False target_sum = 15 # 校验所有行的和 for row in square: if sum(row) != target_sum: return False # 校验所有列的和 for col in range(3): col_sum = square[0][col] + square[1][col] + square[2][col] if col_sum != target_sum: return False # 校验两条对角线的和 diag1 = square[0][0] + square[1][1] + square[2][2] diag2 = square[0][2] + square[1][1] + square[2][0] if diag1 != target_sum or diag2 != target_sum: return False return True def main(): # 合法测试用例:标准洛书幻方 valid_case = [[4, 9, 2], [3, 5, 7], [8, 1, 6]] # 非法测试用例:非3阶、元素不符合规则 invalid_case = [[10, 7, 4, 5], [2, 1, 0, 8], [8, 4, 6, 1], [4, 4, 5, 1]] print(f"合法洛书幻方判定结果:{is_lo_shu_magic_square(valid_case)}") print(f"非法输入判定结果:{is_lo_shu_magic_square(invalid_case)}") if __name__ == "__main__": main()
运行结果
代码执行后输出如下:
合法洛书幻方判定结果:True 非法输入判定结果:False
你初始代码中写的4阶方阵属于普通4阶幻方,不属于洛书幻方范畴,洛书幻方固定为3阶规格。
内容的提问来源于stack exchange,提问作者m24
相关产品推荐
相关产品推荐

