% A cryptarithmetic puzzle:
%
%   BASE
%  +BALL
%  _____
%  GAMES

:- use_module(library(clpfd)).

crypt(Vs):-
   Vs = [B,A,S,E,L,G,M],  % Liste aller vorkommenden Buchstaben
   %domain(Vs, 0, 9),      % Wertebereich festlegen (SICStus-Prolog)
   Vs ins 0..9,           % Wertebereich festlegen (SWI-Prolog)
   B #> 0, G #> 0,        % Constraints festlegen
   all_different(Vs),
              1000*B+100*A+10*S+E
   +          1000*B+100*A+10*L+L
   #= 10000*G+1000*A+100*M+10*E+S,
   labeling([],Vs).       % Variablenwerte aufzählen

% ?- crypt([B,A,S,E,L,G,M]).
% B = 7, A = 4, S = 8, E = 3, L = 5, G = 1, M = 9
