Tag: sicstus prolog

序言约束处理:包装正方形

我试图解决序言中的约束处理问题。 我需要在10×10的网格中包装5×5,4×4,3×3和2×2的4个方格。 它们可能不重叠。 我的variables是这样的: Name: SqX(i), i=1..10, domain: 1..10 其中X是5,4,3或2.索引i表示行,即域在网格中的列。 我的第一个约束试图定义正方形的宽度和高度。 我这样制定: Constraint: SqX(i) > SqX(j)-X /\ i>jX, range: i>0 /\ j>0 因此,可能的点被限制在彼此的X行和列之内。 然而,Prolog停止这些约束,并给出以下结果: Adding constraint "(Sq5_I > Sq5_J-5) /\ (I>J-5)" for values: I=1, J=1, I=1, J=2, I=1, J=3, I=1, J=4, I=1, J=5, I=1, J=6, =======================[ End Solutions ]======================= 所以它停在那里,甚至没有检查其他广场。 我的约束很可能太紧张,但我不明白为什么或如何。 有什么build议么?