Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
% S E N D % + M O R E % _________ % M O N E Y /* * S,E,N,D,M,O,R,Y são as variáveis que irão assumir valores * ins é um operador do módulo clpfd. Variables ins 0..9 siginifica que todas as variáveis estão dentro do domínio de 0 a 9 * all_diferent é um operador do módulo clpfd. Força que todas as variáveis sejam diferentes * #= é um operador do módulo clpfd. Ele significa um operador que forçará a igualdade de variáveis. Basicamente: * (1000*S + 100*E + 10*N + D) + (1000*M + 100*O + 10*R + E) seja igual a (10000*M + 1000*O + 100*N + 10*E + Y) [SEND+MORE = MONEY] * #\= é um operador do módulo clpfd. Ele forçará que os valores sejam diferentes. V #\= 0 siginifica que V será diferente de 0. *label é um operador do módulo clpfd. Atribuirá valores para cada variável do domínio. * */ :- use_module(library(clpfd)). puzzle([S,E,N,D,M,O,R,Y]) :- Variables = [S,E,N,D,M,O,R,Y], Variables ins 0..9, %Todos os dígitos de 0 a 9. Usamos a restrição ins de clpfd all_different(Variables), %Todos os dígitos diferentes. Usamos a restrição all_different de clpfd (1000*S + 100*E + 10*N + D) + %S E N D (1000*M + 100*O + 10*R + E) #= %M O R E . Usamos a restrição #= de clpfd (10000*M + 1000*O + 100*N + 10*E + Y), %M O N E Y S #\= 0, M #\=0, %Dìgitos iniciais diferentes de 0. Usamos a restrição #\= de clpfd label(Variables). %Atribuição de Valores. Usamos label de clpfd que faz atribuição de valores