% SEND + MORE = MONEY
% Adapted from: http://en.wikipedia.org/wiki/Constraint_programming

:- use_module(library(clpfd)).

sendmore(Digits) :-
   Digits = [S,E,N,D,M,O,R,Y],     % Create variables
   allin(Digits, 0..9),               % Associate domains to variables
   S #\= 0,                        % Constraint: S must be different from 0
   M #\= 0,
   all_different(Digits),           % all the elements must take different values
                1000*S + 100*E + 10*N + D     % Other constraints
              + 1000*M + 100*O + 10*R + E
   #= 10000*M + 1000*O + 100*N + 10*E + Y,
   label(Digits).               % Start the search


allin([],_).
allin([Pos|Board],D) :-
	Pos in D,
	allin(Board,D).