You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:09:22