实例化故障 ECLiPSe CSP
Instantiation fault ECLiPSe CSP
我的 CSP 在 ECLiPSe 下有问题。我想在我的密码中添加一个约束条件,要求 TWO 表示的数字可以被 2 整除。
[eclipse 11]: test(Xs).
instantiation fault in (_268{[1..4]}*100 + _200{[0..9]}*10 + _302{[0..9]}*1) mod 2#=0
Abort
感谢您的帮助。
我的代码:
/*
T W O
+ T H R E E
+ T H R E E
---------
E I G H T
*/
:- lib(fd).
myCsp(Xs):-
Xs=[W,I,G,H,T,R,O,E],
Xs::0..9,
[C1,C2,C3,C4]::0..2,
T #> 0,E #> 0,
O + E + E #= C1*10 + T,
W + E + E + C1 #= C2*10 + H,
T + R + R + C2 #= C3*10 + G,
H + H + C3 #= C4*10 + I,
T + T + C4 #= E,
(T*100 + W*10 + O*1) mod 2 #= 0,
alldifferent([W,I,G,H,T,R,O,E]).
test(Xs):-
myCsp(Xs),
labeling(Xs).
mod/2操作在
(T*100 + W*10 + O*1) mod 2 #= 0
不支持。您可以将该行重写为
T*100 + W*10 + O*1 #= 2*_
表示左侧表达式等于匿名整数变量的两倍,因此是二的倍数。
我的 CSP 在 ECLiPSe 下有问题。我想在我的密码中添加一个约束条件,要求 TWO 表示的数字可以被 2 整除。
[eclipse 11]: test(Xs).
instantiation fault in (_268{[1..4]}*100 + _200{[0..9]}*10 + _302{[0..9]}*1) mod 2#=0
Abort
感谢您的帮助。
我的代码:
/*
T W O
+ T H R E E
+ T H R E E
---------
E I G H T
*/
:- lib(fd).
myCsp(Xs):-
Xs=[W,I,G,H,T,R,O,E],
Xs::0..9,
[C1,C2,C3,C4]::0..2,
T #> 0,E #> 0,
O + E + E #= C1*10 + T,
W + E + E + C1 #= C2*10 + H,
T + R + R + C2 #= C3*10 + G,
H + H + C3 #= C4*10 + I,
T + T + C4 #= E,
(T*100 + W*10 + O*1) mod 2 #= 0,
alldifferent([W,I,G,H,T,R,O,E]).
test(Xs):-
myCsp(Xs),
labeling(Xs).
mod/2操作在
(T*100 + W*10 + O*1) mod 2 #= 0
不支持。您可以将该行重写为
T*100 + W*10 + O*1 #= 2*_
表示左侧表达式等于匿名整数变量的两倍,因此是二的倍数。