我认为我的prolog代码可以解决这个乘法问题,但它会返回false。我错过了什么吗?
solve(T,W,O,S,I,X,E,L,V) :-
X = [T,W,O,S,I,X,E,L,V],
Digits = [0,1,2,3,4,5,6,7,8,9],
assign_digits(X, Digits),
T > 0,
S > 0,
(100*T + 10*W + O) * (100*S + 10*I + X) =:=
100000*T + 10000*W + 1000*E + 100*L + 10*V + E,
write(X).
答案 0 :(得分:3)
您对数字和变量列表使用了相同的变量X.
只需重命名代表所有变量列表的变量:
solve(T,W,O,S,I,X,E,L,V) :-
Vars = [T,W,O,S,I,X,E,L,V],
Digits = [0,1,2,3,4,5,6,7,8,9],
assign_digits(Vars, Digits),
T > 0,
S > 0,
(100*T + 10*W + O) * (100*S + 10*I + X) =:=
100000*T + 10000*W + 1000*E + 100*L + 10*V + E,
write(Vars).