home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lifeos2.zip / LIFE-1.02 / TESTS / LF / ADDTAB.LF next >
Text File  |  1996-06-04  |  844b  |  42 lines

  1.  
  2. dec -> {0;1;2;3;4;5;6;7;8;9}.
  3.  
  4. digits(A,[A:0,1,2,3,4,5,6,7,8,9]) :- !.
  5. digits(A,[0,A:1,2,3,4,5,6,7,8,9]) :- !.
  6. digits(A,[0,1,A:2,3,4,5,6,7,8,9]) :- !.
  7. digits(A,[0,1,2,A:3,4,5,6,7,8,9]) :- !.
  8. digits(A,[0,1,2,3,A:4,5,6,7,8,9]) :- !.
  9. digits(A,[0,1,2,3,4,A:5,6,7,8,9]) :- !.
  10. digits(A,[0,1,2,3,4,5,A:6,7,8,9]) :- !.
  11. digits(A,[0,1,2,3,4,5,6,A:7,8,9]) :- !.
  12. digits(A,[0,1,2,3,4,5,6,7,A:8,9]) :- !.
  13. digits(A,[0,1,2,3,4,5,6,7,8,A:9]) :- !.
  14.  
  15. sum(A,B,S,0) :- S:(A+B)<10, !.
  16. sum(A,B,(A+B-10),1).
  17.  
  18. % Create a table of one digit additions with
  19. % coreferences for all identical values.
  20. addtab :- 
  21.     sum(A:dec,B:dec,S,C),
  22.     digits(A,D),
  23.     digits(B,D),
  24.     digits(S,D),
  25.     digits(C,D),
  26.     assert((add(A,B,S,C))),
  27.     fail.
  28. addtab.
  29.  
  30. addtab?
  31.  
  32. diff(X,X) -> false.
  33. diff(_,_) -> true.
  34.  
  35. alldiff(A,B,C,D) :-
  36.     diff(A,B),
  37.     diff(A,C),
  38.     diff(A,D),
  39.     diff(B,C),
  40.     diff(B,D),
  41.     diff(C,D).
  42.