:- use_module(library(clpfd)). 

smm :-
     X = [S,E,N,D,M,O,R,Y],
     X ins 0 .. 9,
     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,
     all_distinct(X),
     label(X),
     writef('A változókhoz rendelt értékek a megfelelő sorrendben: \n[S,E,N,D,M,O,R,Y] \n%w',[X]).


/*

Ez csak egy rövidke demonstráció arra, hogy a korlátlogika sokkal hatékonyabb, 
mint a "sima" Prolog. 
Ha bővebben érdekli a téma, nézzen utána.

Kiindulás lehet ez is:
http://www.sztaki.hu/~akovacs/publications/CLPsegedlet.pdf

de nyilván találhat más használható anyagot is.

Ez hosszabb, de talán érthetőbb:

https://dea.lib.unideb.hu/dea/bitstream/handle/2437/86419/diplomamunka_Bota.pdf?sequence=1&isAllowed=y

(Hajdani Pollackos későbbi msc-s szakdolgozata. :).
A srác azóta megcsinálta a phd-t, most egy ausztrál egyetemen tanít.)

*/
