如何打印所有半魔方块?

How to print all semimagic squares?

提问人:ananta 提问时间:6/11/2023 最后编辑:ananta 更新时间:6/12/2023 访问量:43

问:

我正在研究一个代码来打印给定大小的所有半魔方 [1]。我正在使用以下定义:

  1. n×n半魔术平方由数字1到n平方组成。
  2. 所有数字必须是不同的。
  3. 每行和每列的总和相等。

根据 Ripatti A. (2018) [1]:

n 半魔术方块数
1 1
2 0
3 9
4 68 688
5 579 043 051 200
6 94 590 660 245 399 996 601 600
... ...

老实说,除了生成所有可能的方块并检查每个方块是否神奇之外,我想不出任何东西。我希望程序至少处理 5 乘以 5 平方的情况,并且有 25 个阶乘不同的平方!使用我的方法将需要很长时间。虽然我确实看到了很多关于线性代数和数论书籍的参考资料,但我找不到可以做到这一点的算法。

如果有人知道任何可以帮助我的资源,请告诉我。

引用

1. Ripatti A. (2018) 关于 6 阶半魔方的数量。arXiv的。10.48550/arXiv.1807.02983

Python 线性代 离散数学 数论

评论

1赞 Luuk 6/11/2023
我想你应该把这个发布在: math.stackexchange.com
1赞 Jose Manuel de Frutos 6/11/2023
考虑在 math.stackexchange.com 中发布这个问题
1赞 bereal 6/12/2023
如果我的数学是正确的,那么以每秒百万的速度打印所有这些方格将需要超过30亿年的时间。
0赞 ananta 6/12/2023
@bereal,你是对的,我应该管理我的期望,我已经相应地修改了问题。
0赞 bereal 6/12/2023
一种可能的优化是,您实际上不需要检查所有 25 个!二 乘。单元格的总和为 325,因此每行和每列的总和必须达到 75。

答: 暂无答案