编写一个Prolog程序,解决以下算术难题

时间:2015-03-23 14:59:42

标签: prolog clpfd cryptarithmetic-puzzle

  PYP
  CQB
 CBCW
-----
WXYPB

其中每个字母代表0-9中的唯一数字,而该行下方的值代表相关数字的总和。

1 个答案:

答案 0 :(得分:1)

查看非常相关问题Faster implementation of verbal arithmetic in Prolog

根据my previous answer,让我们使用来解决您的具体等式!

?- Eq = ([P,Y,P] + [C,Q,B] + [C,B,C,W] #= [W,X,Y,P,B]),
   crypt_arith_(Eq,Zs),
   labeling([],Zs).
Eq = ([9,3,9]+[8,7,5]+[8,5,8,1]#=[1,0,3,9,5]),
Zs = [9,3,8,7,5,1,0],
P  = 9,
Y  = 3,
C  = 8,
Q  = 7,
B  = 5,
W  = 1,
X  = 0 ;
false.