declare
% A B C * D E F
% _______________
% G H I
% J K L
% M N O
% _______________
% P Q R S T
proc {Twice Root}
A B C D E F G H I J K L M N O P Q R S T
C1 C2 C3
in
Root = solution(a:A b:B c:C d:D e:E f:F g:G h:H i:I j:J
k:K l:L m:M n:N o:O p:P q:Q r:R s:S t:T)
Root ::: 0#9
C1 :: 0#1
C2 :: 0#2
C3 :: 0#1
%CarriesLow ::: 0#9
%CarriesHigh ::: 0#1
{For 0 9 1
proc {$ I} {FD.exactly 2 Root I} end
}
100*G + 10*H + I +
1000*J + 100*K + 10*L +
10000*M + 1000*N + 100*O =:
10000*P + 1000*Q + 100*R + 10*S + T
(100*D + 10*E + F)*C =: 100*G + 10*H + I
(100*D + 10*E + F)*B =: 100*J + 10*K + L
(100*D + 10*E + F)*A =: 100*M + 10*N + O
(100*A + 10*B + C) * (100*D + 10*E + F) =:
10000*P + 1000*Q + 100*R + 10*S + T
% Carry restrictions
T =: I
S + 10*C1 =: H + L
R + 10*C2 =: G + K + O + C1
Q + 10*C3 =: J + N + C2
P =: M + C3
{FD.distribute generic(order:size) Root}
end
{ExploreOne Twice}
The only solution then is
Q=R=0, D=H=1, A=B=2, J=M=3, C=P=4,
K=N=5, I=T=6, E=G=7, L=O=8, F=S=9
224 * 179
_________
716
358
358
_________
40096