ftts :- L = [F,O,R,T,Y,E,N,S,I,X],
        Digits = [0,1,2,3,4,5,6,7,8,9],
        assign_digits(L, Digits),
	F > 0,
	T > 0,
	S > F,
	       10000*F + 1000*O + 100*R + 10*T + Y +
	                     + 2*(100*T + 10*E + N) =:=
	       10000*S + 1000*I + 100*X + 10*T + Y,
	write('  '), write(F), write(O), write(R), write(T), write(Y), nl,
	write(' +  '), write(T), write(E), write(N), nl,
	write(' +  '), write(T), write(E), write(N), nl,
	write('  --------'), nl,
	write('  '), write(S), write(I), write(X), write(T), write(Y), nl.

select(Z, [Z|R], R).
select(Z, [Y|Zs], [Y|Ys]):- select(Z, Zs, Ys).

assign_digits([], _List).
assign_digits([D|Ds], List):-
        select(D, List, NewList),
	/* Two distinct letters should have distinct values */
        assign_digits(Ds, NewList).
