在Z3

时间:2015-10-27 12:54:49

标签: z3 z3py

我是Z3的新手,并且通过调整现有的数独求解器(http://lauri.võsandi.com/tub/qaoes/z3.html),练习尝试了一个魔术解算器。除了所有行,列和主对角线的总和相等且条目不同且在[1,N * N]范围内之外,我不提供任何事实(即特定框中没有特定数字)。它适用于大小为4的正方形。虽然更高,但我放弃等待解决方案。

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

感谢。

1 个答案:

答案 0 :(得分:1)

您可以通过将每个单元格中的条目表示为BitVec()变量而不是Int()变量来获得更好的结果。

有关示例实现,请参阅https://github.com/0vercl0k/z3-playground/blob/master/magic_square_z3.py。该实现能够在1秒内找到5x5魔方的解决方案,在13秒内找到6x6魔方,在24秒内找到7x7魔方(在我的计算机上),所以它似乎比你的配方好得多