Guest User

Untitled

a guest
Feb 20th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. domains
  2.  
  3.  
  4.  
  5. list=symbol*
  6.  
  7.  
  8.  
  9. predicates
  10.  
  11.  
  12.  
  13. more(symbol, symbol)
  14.  
  15. less(symbol, symbol)
  16.  
  17. iscity(symbol)
  18.  
  19. iscmd(symbol)
  20.  
  21. solve(symbol,symbol,symbol,symbol,symbol,symbol)
  22.  
  23.  
  24.  
  25. solvel(list, list, integer)
  26.  
  27. iscityl(list, integer)
  28.  
  29. iscmdl(list, integer)
  30.  
  31. lessl(list, list)
  32.  
  33. notmorel(list, list)
  34.  
  35.  
  36.  
  37. goal
  38.  
  39.  
  40.  
  41. /**
  42.  
  43.  * GOALS. Uncomment your chose.
  44.  
  45.  */
  46.  
  47.  
  48.  
  49. %solve(A,B,C,X,Y,Z).
  50.  
  51. %solvel(L1, L2, 3).
  52.  
  53.  
  54.  
  55. clauses
  56.  
  57.  
  58.  
  59. /**
  60.  
  61.  * CHAPTER 0: Data
  62.  
  63.  */
  64.  
  65.  
  66.  
  67. % List of known references
  68.  
  69. more(krasnodar, chelyabinsk).
  70.  
  71. more(samara, chelyabinsk).
  72.  
  73. more(dinamo, krasnodar).
  74.  
  75. more(spartak, torpedo).
  76.  
  77.  
  78.  
  79. % List of known cities
  80.  
  81. iscity(krasnodar).
  82.  
  83. iscity(chelyabinsk).
  84.  
  85. iscity(samara).
  86.  
  87.  
  88.  
  89. % List of known teams' names
  90.  
  91. iscmd(torpedo).
  92.  
  93. iscmd(spartak).
  94.  
  95. iscmd(dinamo).
  96.  
  97.  
  98.  
  99. /**
  100.  
  101.  * CHAPTER 1: Predicates for fixed data.
  102.  
  103.  */
  104.  
  105. less(A, B):-A<>B,not(more(A, B)).
  106.  
  107.  
  108.  
  109. solve(A,B,C,X,Y,Z):-
  110.  
  111. iscity(A),iscity(B),iscity(C),
  112.  
  113. iscmd(X),iscmd(Y),iscmd(Z),
  114.  
  115. not(more(X, A)),
  116.  
  117. not(more(X, B)),
  118.  
  119. not(more(X, C)),
  120.  
  121. not(more(Y, B)),
  122.  
  123. not(more(Y, C)),
  124.  
  125. not(more(Z, C)),
  126.  
  127.  
  128.  
  129. not(more(A, X)),
  130.  
  131. not(more(A, Y)),
  132.  
  133. not(more(A, Z)),
  134.  
  135. not(more(B, Y)),
  136.  
  137. not(more(B, Z)),
  138.  
  139. not(more(C, Z)),
  140.  
  141.  
  142.  
  143. less(A, B),
  144.  
  145. less(A, C),
  146.  
  147. less(B, C),
  148.  
  149. less(X, Y),
  150.  
  151. less(X, Z),
  152.  
  153. less(Y, Z).
  154.  
  155.  
  156.  
  157. /**
  158.  
  159.  * CHAPTER 2: Predicates for array data.
  160.  
  161.  */
  162.  
  163. iscityl([], 0) :- !.
  164.  
  165. iscityl([H|T], N) :- Ndec=N-1,iscity(H), iscityl(T, Ndec).
  166.  
  167.  
  168.  
  169. iscmdl([], 0) :- !.
  170.  
  171. iscmdl([H|T], N) :- Ndec=N-1,iscmd(H), iscmdl(T, Ndec).
  172.  
  173.  
  174.  
  175. notmorel(_, []).
  176.  
  177. notmorel([H1|T1], [H2|T2]) :- not(more(H1, H2)), notmorel(T1, T2), notmorel([H1|T1], T2).
  178.  
  179.  
  180.  
  181. lessl(_, []).
  182.  
  183. lessl([H|T], [H|T]) :- lessl([H|T], T).
  184.  
  185. lessl([H1|T1], [H2|T2]) :- less(H1, H2),lessl(T1, T2),lessl([H1|T1], T2).
  186.  
  187.  
  188.  
  189. solvel(LCity, LCmd, N):-
  190.  
  191. iscityl(LCity, N), iscmdl(LCmd, N),
  192.  
  193. notmorel(LCity, LCmd),
  194.  
  195. notmorel(LCmd, LCity),
  196.  
  197. lessl(LCmd, LCmd),
  198.  
  199. lessl(LCity, LCity).
Add Comment
Please, Sign In to add comment