对整数除法的约束
Constraint over the integer division
我在 prolog (Eclipse CLP) 中有以下语句:
?-X::1..100, X/5 #= 2, X = 12.
结果为No.
。我想检查 X
在 5
上的整数除法是否等于 2
。如果我写下面的语句:
?-X::1..100, X//5 #= 2, X = 12.
我会得到以下错误:
instantiation fault in //(X{1 .. 100}, 5, _703)
所以,问题是如何检查变量 X
的整数除法?
我假设您使用的是 library(ic),它目前不直接支持 flooring 或 truncating divisions。您可以通过引入 "remainder" 变量并使用乘法来重新表述您的条件:
?- X::1..100, Rem::0..4, X #= 5*2 + Rem, X = 13.
X = 13
Rem = 3
Yes (0.00s cpu)
我在 prolog (Eclipse CLP) 中有以下语句:
?-X::1..100, X/5 #= 2, X = 12.
结果为No.
。我想检查 X
在 5
上的整数除法是否等于 2
。如果我写下面的语句:
?-X::1..100, X//5 #= 2, X = 12.
我会得到以下错误:
instantiation fault in //(X{1 .. 100}, 5, _703)
所以,问题是如何检查变量 X
的整数除法?
我假设您使用的是 library(ic),它目前不直接支持 flooring 或 truncating divisions。您可以通过引入 "remainder" 变量并使用乘法来重新表述您的条件:
?- X::1..100, Rem::0..4, X #= 5*2 + Rem, X = 13.
X = 13
Rem = 3
Yes (0.00s cpu)