Advertisement
Guest User

Untitled

a guest
May 29th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1.  
  2. /* Problem 3 */
  3.  
  4. % Helper predicates
  5.  
  6. contains(X, [X|_]).
  7. contains(X, [_|T]) :- contains(X, T).
  8.  
  9. subset([], _).
  10. subset([H|T], L) :- contains(H, L), subset(T, L).
  11.  
  12. toNumRev([], 0).
  13. toNumRev([H|T], S) :- toNumRev(T, S2), S is S2*10 + H.
  14.  
  15. app([], L2, L2).
  16. app(.(H,T), L2, .(H,L)) :- app(T, L2, L).
  17.  
  18. rev([],[]).
  19. rev(.(H,T), L) :- rev(T, L0), app(L0, [H], L).
  20.  
  21. toNum(L, S) :- rev(L, L2), toNumRev(L2, S).
  22.  
  23. wordsum(W1, W2, W3) :- toNum(W1, S1), toNum(W2, S2), toNum(W3, S3), S3 is S1 + S2.
  24.  
  25. verbalarithmetic(Letters, Word1, Word2, Word3) :-
  26. fd_all_different(Letters), /* letters must be unique */
  27. subset(Letters, [0,1,2,3,4,5,6,7,8,9]), /* letters must be digits */
  28. \+(nth(1, Word1, 0)), \+(nth(1, Word2, 0)), \+(nth(1, Word3, 0)), /* first letter of each word can't be 0 */
  29. wordsum(Word1, Word2, Word3).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement