0

我认为我的序言代码可以解决这个乘法问题,但它返回错误。我错过了什么吗?

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).
4

1 回答 1

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).
于 2014-05-16T21:26:00.797 回答