将随机的3x3矩阵转换为3x3幻方

时间:2019-07-06 13:41:28

标签: python magic-square

我有一个随机的3x3数组,由1-9之间的数字组成(允许重复)。有没有一种有效的方法可以将此数组与最接近的1-9 3x3魔方进行比较?

我想到通过列出所有魔术方组合(其中8个)来蛮力强行,但这非常不雅致。我正在寻找更理想的东西。

假设我有3x3矩阵

4 3 8
9 6 1
3 7 6

存在一个魔术方块

4 3 8
9 5 1
2 7 6

仅原始矩阵中的中间元素和左下角的元素应被更改(以最小的可能值),以获得幻方。

唯一可能的3x3魔方组合是

all_squares = [
            [[8, 1, 6, 3, 5, 7, 4, 9, 2]],
            [[6, 1, 8, 7, 5, 3, 2, 9, 4]],
            [[4, 9, 2, 3, 5, 7, 8, 1, 6]],
            [[2, 9, 4, 7, 5, 3, 6, 1, 8]], 
            [[8, 3, 4, 1, 5, 9, 6, 7, 2]],
            [[4, 3, 8, 9, 5, 1, 2, 7, 6]], 
            [[6, 7, 2, 1, 5, 9, 8, 3, 4]], 
            [[2, 7, 6, 9, 5, 1, 4, 3, 8]],
            ]

但是我不想将输入矩阵与列表中的每种情况进行比较以检查其是否足够接近。

0 个答案:

没有答案