我正在尝试解决密码学问题(将数字分配给字母)
杰拉德 + 唐纳德 = 罗伯特
每个字母代表一个不同的数字(0 到 9 之间)。每个单词的第一个字母代表一个不为 0 的数字。
问题 :
该软件不显示错误,也不显示解决方案。
%values between 0 and 9
valeur(0).
valeur(1).
valeur(2).
valeur(3).
valeur(4).
valeur(5).
valeur(6).
valeur(7).
valeur(8).
valeur(9).
%values between 1 and 9
valeur2(1).
valeur2(2).
valeur2(3).
valeur2(4).
valeur2(5).
valeur2(6).
valeur2(7).
valeur2(8).
valeur2(9).
%on définit des valeurs de 0 à 1
valeur3(0).
valeur3(1).
%definition of the sum rule and its equation
somme(RE,X,Y,Z,RS) :- C is RE+X+Y,D is Z+(10*RS),C is D.
%the predicate "solution" will be called for the execution
solution([G,E,R,A,L,D,O,N,B,T]) :- valeur2(R),
valeur2(G),
valeur(E),
valeur(A),
valeur(L),
valeur2(D),
valeur(O),
valeur(N),
valeur(B),
valeur(T),
%on ajoute la contraintes de différence 2 à 2
G=\=E,
R=\=E,R=\=G,
A=\=E,A=\=G,A=\=R,
L=\=E,L=\=G,L=\=R,L=\=A,
D=\=E,D=\=G,D=\=R,D=\=A,D=\=L,
O=\=E,O=\=G,O=\=R,O=\=A,O=\=L,O=\=D,
N=\=E,N=\=G,N=\=R,N=\=A,N=\=L,N=\=D,N=\=O,
B=\=E,B=\=G,B=\=R,B=\=A,B=\=L,B=\=D,B=\=O,B=\=N,
T=\=E,T=\=G,T=\=R,T=\=A,T=\=L,T=\=D,T=\=O,T=\=N,T=\=B,
%-------------------------
valeur3(R5),
valeur3(R4),
valeur3(R3),
valeur3(R2),
valeur3(R1),
somme(R1,G,D,R,0),
somme(R2,E,O,O,R1),
somme(R3,R,N,B,R2),
somme(R4,A,A,E,R3),
somme(R5,L,L,R,R4),
somme(0,D,D,T,R5),
gerald =:= 100000*D+10000*O+1000*N+100*A+10*L+D,
donald =:= 100000*G+10000*E+1000*R+100*A+10*L+D,
robert =:= 100000*R+10000*O+1000*B+100*E+10*R+T,
robert =:= gerald + donald.