/*
A SEND MORE MONEY feladat megoldása.

*/


smm :-
        X = [S,E,N,D,M,O,R,Y],
        Digits = [0,1,2,3,4,5,6,7,8,9],
        assign_digits(X, Digits),
        M > 0, 
        S > 0,
                  1000*S + 100*E + 10*N + D +
                  1000*M + 100*O + 10*R + E =:=
        10000*M + 1000*O + 100*N + 10*E + Y,
        writef('A változókhoz rendelt értékek a megfelelő sorrendben: \n[S,E,N,D,M,O,R,Y] \n%w',[X]).


assign_digits([], _).
assign_digits([D|Ds], List):-
        select(D, List, NewList),
        assign_digits(Ds, NewList).



/*

select/3 - beépített predikátum
select(?Elem, ?List1, ?List2)
    Is true when List1, with Elem removed, results in List2.
(Idézet a help-ből.)

Próbálja ki, pl.: 
 ?- select(c, [a,b,c,d], L).

 ?- select(c, [a,b,c,d,c], L).

(Ne felejtsen ;-t írni az eredmény végére.)

?- select(A, [a,b,c,d], L).

(Itt se felejtse el a ;-t.)


assign_digits/2:
assign_digits(változólista, értéklista) - a változókhoz minden lehetséges módon, egyértelműen hozzárendeli az értékeket. 

Hogy jobban megértse, futtassa le pl. ezt a szabályt:

assign_digits([A,B,C],[1,2,3]).

(eredmények után ;-vel)

*/