【问题标题】:Cryptarithmetic multiplication returning false密码乘法返回假
【发布时间】:2014-05-16 21:13:51
【问题描述】:

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

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

【问题讨论】:

    标签: prolog cryptarithmetic-puzzle


    【解决方案1】:

    您对数字和变量列表使用了相同的变量 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).
    

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 2011-02-04
      相关资源
      最近更新 更多