求解Z3中的幻方

求解Z3中的幻方,z3,z3py,Z3,Z3py,我是Z3新手,作为一个练习,我尝试通过修改现有的数独解算器()来实现幻方解算器。除所有行、列和主对角线的总和相等且条目不同且在[1,N*N]范围内外,我不提供任何事实(即特定框中没有特定数字)。它适用于大小为4的正方形。再高一点,我就不再等待解决方案了 这正常吗?或者有经验的z3程序员会建议我的实现有问题,因为这种规模的问题应该是可以解决的吗 谢谢。将每个单元格中的条目表示为BitVec()变量,而不是Int()变量,可能会得到更好的结果 有关示例实现,请参见。该实现能够在1秒内找到5x5幻方的

我是Z3新手,作为一个练习,我尝试通过修改现有的数独解算器()来实现幻方解算器。除所有行、列和主对角线的总和相等且条目不同且在[1,N*N]范围内外,我不提供任何事实(即特定框中没有特定数字)。它适用于大小为4的正方形。再高一点,我就不再等待解决方案了

这正常吗?或者有经验的z3程序员会建议我的实现有问题,因为这种规模的问题应该是可以解决的吗


谢谢。

将每个单元格中的条目表示为
BitVec()
变量,而不是
Int()
变量,可能会得到更好的结果

有关示例实现,请参见。该实现能够在1秒内找到5x5幻方的解决方案,在13秒内找到6x6幻方的解决方案,在24秒内找到7x7幻方的解决方案(在我的计算机上),因此它似乎比您的公式要好得多