Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.50 KB | None | 0 0
  1. :-module(artur, [iapb155550/3]).
  2.  
  3.  
  4. iapb155550(MyColor, X, Y):-
  5. leia_suund(MyColor, S),
  6. kaigu_variandid(X, Y, S,_,_),!.
  7. iapb155550(MyColor,0,0):-
  8. tee(X, Y, MyColor),
  9. leia_suund(MyColor, S),
  10. kaigu_variandid(X, Y, S,_,_),!.
  11. iapb155550(MyColor,_,_) :-
  12. tee(X, Y, MyColor),
  13. leia_suund(MyColor, S),
  14. kaigu_variandid(X, Y, S,_,_),!.
  15. iapb155550(_,_,_).
  16.  
  17.  
  18. own_color(1, 1).
  19. own_color(1, 10).
  20. own_color(10, 1).
  21. own_color(10, 10).
  22. own_color(2, 2).
  23. own_color(2, 20).
  24. own_color(20, 2).
  25. own_color(20, 20).
  26.  
  27. partner_color(1, 2).
  28. partner_color(1, 20).
  29. partner_color(10, 2).
  30. partner_color(10, 20).
  31. partner_color(2, 1).
  32. partner_color(2, 10).
  33. partner_color(20, 1).
  34. partner_color(20, 10).
  35.  
  36.  
  37. leia_suund(1,1):- !.
  38. leia_suund(2,-1).
  39. leia_suund(10,1).
  40. leia_suund(10,-1).
  41. leia_suund(20,1).
  42. leia_suund(20,-1).
  43.  
  44.  
  45.  
  46.  
  47.  
  48. tee(X,Y,MyColor):-
  49. own_color(MyColor, Color),
  50. ruut(X,Y,Color),
  51. (Color ==10 ; Color ==20),
  52. leia_kaigud(X, Y, X1, Y1, X2, Y2),
  53. kas_tamm_saab_votta(Color,X1,Y1,X2,Y2).
  54.  
  55. tee(X,Y,Color):-
  56. ruut(X,Y,Color),
  57. (kas_saab_votta(X,Y,1,_,_,_,_);
  58. kas_saab_votta(X,Y,-1,_,_,_,_)).
  59.  
  60. tee(X,Y,MyColor):-
  61. own_color(MyColor, Color),
  62. ruut(X,Y,Color),
  63. (Color ==10 ; Color ==20),
  64. leia_suund(Color,Suund),
  65. leia(Suund,X,Y,_,_).
  66.  
  67. tee(X,Y,Color):-
  68. ruut(X,Y,Color),
  69. leia_suund(Color,Suund),
  70. leia(Suund,X,Y,_,_),!.
  71.  
  72.  
  73.  
  74.  
  75. leia_kaigud(X0, Y0, X1, Y1, X2, Y2):-
  76. findall((X,Y), (ruut(X,Y,_), tingimus(X0,Y0,X,Y)), Output),
  77. delete(Output, (X0,Y0), Diagonals),
  78. list_to_set(Diagonals, Diagonals1),
  79. vota_tamm((X0,Y0), Diagonals1, X1, Y1, X2, Y2).
  80.  
  81.  
  82. vota_tamm((X0,Y0),Diagonals, X1, Y1, X2, Y2):-
  83. findall((X,Y), (member((X,Y),Diagonals), vaenlane((X0,Y0),(X,Y))), Vaenlane),
  84.  
  85. enemy(Vaenlane, X1, Y1, X2, Y2),
  86. ((X0 > X1, XS is -1);(X0 < X1, XS is 1)),
  87. ((Y0 > Y1, YS is -1);(Y0 < Y1, YS is 1)),
  88. X2 is X1 + XS,
  89. Y2 is Y1 + YS.
  90.  
  91. vaenlane((X0,Y0),(X,Y)):-
  92. ruut(X0, Y0, MyColor),
  93. partner_color(MyColor,OpColor),
  94. ruut(X,Y,OpColor),
  95. Vx is sign(X-X0), Vy is sign(Y-Y0),
  96. X1 is X0 + Vx, Y1 is Y0 + Vy,
  97. kas_vabu_ruute((X1,Y1),(X,Y),(Vx,Vy)),
  98. X2 is X + Vx,
  99. Y2 is Y + Vy,
  100. ruut(X2,Y2,0).
  101.  
  102. enemy([E1|_], X, Y, _, _) :-
  103.  
  104. phrase(listiks(E1), L),
  105.  
  106. enemy2(L, X, Y).
  107.  
  108. listiks((X,Y)) --> !, listiks(X), listiks(Y).
  109. listiks(A) --> [A].
  110.  
  111. enemy2([E1|T1], X, Y):-
  112. X is E1,
  113. Y is T1.
  114.  
  115.  
  116.  
  117. kas_vabu_ruute((X,Y),(X,Y),_):- !.
  118. kas_vabu_ruute((Xi,Yi),(X,Y),(Vx,Vy)):-
  119. ruut(Xi,Yi,0),
  120. Xi1 is Xi + Vx, Yi1 is Yi + Vy,
  121. kas_vabu_ruute((Xi1,Yi1),(X,Y),(Vx,Vy)).
  122.  
  123. %------------------
  124. tingimus(X0,Y0,X,Y):-
  125. kas_laual(X0,Y0),
  126. X is Y + X0 - Y0.
  127. tingimus(X0,Y0,X,Y):-
  128. kas_laual(X0,Y0),
  129. X is -Y + X0 + Y0.
  130.  
  131. kas_laual(X,Y):-
  132. 1=< X,
  133. X=<8,
  134. 1=< Y,
  135. Y=<8,!.
  136.  
  137.  
  138.  
  139. %--------------------------------
  140. kaigu_variandid(X,Y,Suund,X1,Y1):-
  141. votmine(X,Y,Suund,X1,Y1),!.
  142. kaigu_variandid(X,Y,_,X1,Y1):-
  143. kaimine(X,Y,X1,Y1),!.
  144. %--------------------------------
  145. :-dynamic ruudud/4.
  146.  
  147.  
  148. votmine(X,Y,Suund,X1,Y1):-
  149. vota(X,Y,Suund,X1,Y1,X2,Y2),
  150. tee_tammiks(X2,Y2).
  151.  
  152.  
  153. vota(X,Y,_,X1,Y1,X2,Y2) :-
  154. ruut(X,Y,Color),
  155. (Color ==10 ; Color ==20),
  156. vota_tammiga(X,Y,X1,Y1,X2,Y2).
  157.  
  158.  
  159. vota(X,Y,Suund,X1,Y2,X2,Y2):-
  160. ruut(X,Y,Color),
  161. leia_suund(Color, Suund),
  162. kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2),
  163. retract(ruut(X1,Y1,_)),
  164. assert(ruut(X1,Y1,0)),
  165. liigu(X,Y,X2,Y2).
  166.  
  167.  
  168.  
  169. vota_tammiga(X,Y,X1,Y1,X2,Y2):-
  170. ruut(X,Y,Color),
  171. tammi_kaik(X,Y,X0,Y0,XS,YS),
  172. kas_saab_votta_tammiga(X0,Y0,X1,Y1,X2,Y2,XS,YS,Color),
  173. retract(ruut(X1,Y1,_)),
  174. assert(ruut(X1,Y1,0)),
  175. liigu(X,Y,X2,Y2).
  176.  
  177.  
  178. tammi_kaik(X,Y,X0,Y0,XS,YS):-
  179. retractall(ruudud/4),
  180. not(vabad_ruudud(X,Y,1,1)),
  181. not(vabad_ruudud(X,Y,-1,1)),
  182. not(vabad_ruudud(X,Y,1,-1)),
  183. not(vabad_ruudud(X,Y,-1,-1)),
  184. ruudud(X0,Y0,XS,YS).
  185.  
  186.  
  187. vabad_ruudud(X,Y,XS,YS):-
  188. vabad_ruudud(X,Y,XS,YS,X,Y).
  189. vabad_ruudud(X,Y,XS,YS,X1,Y1):-
  190. X0 is X1 + 1 * XS,
  191. Y0 is Y1 + 1 * YS,
  192. ruut(X0,Y0, 0),
  193. assert(ruudud(X0,Y0,XS,YS)),
  194. vabad_ruudud(X,Y,XS,YS,X0,Y0).
  195.  
  196. %-----------
  197.  
  198.  
  199. kaimine(X,Y,X1,Y1):-
  200. ruut(X,Y,Color),
  201. leia_suund(Color,Suund),
  202. leia(Suund,X,Y,X1,Y1),
  203. liigu(X,Y,X1,Y1),
  204. tee_tammiks(X1,Y1).
  205.  
  206.  
  207. tee_tammiks(1,Y1):-
  208. ruut(1,Y1,2),
  209. retract(ruut(1,Y1,2)),
  210. assert(ruut(1,Y1,20)).
  211. tee_tammiks(8,Y1):-
  212. ruut(8,Y1,1),
  213. retract(ruut(8,Y1,1)),
  214. assert(ruut(8,Y1,10)).
  215. tee_tammiks(_,_).
  216.  
  217. liigu(X, Y, X1, Y1):-
  218. ruut(X,Y,Color),
  219. retract(ruut(X, Y, Color)),
  220. retract(ruut(X1, Y1, 0)),
  221. assert(ruut(X, Y, 0)),
  222. assert(ruut(X1, Y1, Color)).
  223.  
  224. leia(Suund,X,Y,X1,Y1):-
  225. (ruut(X,Y,1);ruut(X,Y,2)),
  226. ((X1 is X + 1 * Suund,
  227. Y1 is Y + 1);
  228. (X1 is X + 1 * Suund,
  229. Y1 is Y - 1)),
  230. ruut(X1,Y1,0).
  231.  
  232. leia(_,X,Y,X1,Y1):-
  233. (ruut(X,Y,10);ruut(X,Y,20)),
  234. ((X1 is X + 1,
  235. Y1 is Y + 1);
  236. (X1 is X - 1,
  237. Y1 is Y - 1);
  238. (X1 is X + 1,
  239. Y1 is Y - 1);
  240. (X1 is X - 1,
  241. Y1 is Y + 1)),
  242. ruut(X1,Y1,0).
  243.  
  244. %--------
  245. kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2):- % Votmine edasi paremale
  246. X1 is X + Suund,
  247. Y1 is Y + 1,
  248. ruut(X,Y,MyColor),
  249. ruut(X1,Y1, Color),
  250. partner_color(MyColor,Color), Color =\= 0,
  251. X2 is X1 + Suund,
  252. Y2 is Y1 + 1,
  253. ruut(X2,Y2, 0).
  254. kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2):- % Votmine edasi vasakule
  255. X1 is X + Suund,
  256. Y1 is Y - 1,
  257. ruut(X,Y,MyColor),
  258. ruut(X1,Y1, Color),
  259. partner_color(MyColor,Color), Color =\= 0,
  260. X2 is X1 + Suund,
  261. Y2 is Y1 - 1,
  262. ruut(X2,Y2, 0).
  263. kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2):- % Votmine tagasi paremale
  264. X1 is X + Suund * -1,
  265. Y1 is Y + 1,
  266. ruut(X,Y,MyColor),
  267. ruut(X1,Y1, Color),
  268. partner_color(MyColor,Color), Color =\= 0,
  269. X2 is X1 + Suund * -1,
  270. Y2 is Y1 + 1,
  271. ruut(X2,Y2, 0).
  272. kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2):- % Votmine tagasi vasakule
  273. X1 is X + Suund * -1,
  274. Y1 is Y - 1,
  275. ruut(X,Y,MyColor),
  276. ruut(X1,Y1, Color),
  277. partner_color(MyColor,Color), Color =\= 0,
  278. X2 is X1 + Suund * -1,
  279. Y2 is Y1 - 1,
  280. ruut(X2,Y2, 0).
  281.  
  282. kas_saab_votta_tammiga(X0,Y0,X1,Y1,X2,Y2,XS,YS,Color):-
  283. partner_color(Color,Partner),
  284. X1 is X0 + 1 * XS,
  285. Y1 is Y0 + 1 * YS,
  286. X2 is X1 + 1 * XS,
  287. Y2 is Y1 + 1 * YS,
  288. ruut(X1,Y1,Partner),
  289. ruut(X2,Y2,0).
  290.  
  291. kas_tamm_saab_votta(Color,X1,Y1,X2,Y2):-
  292. partner_color(Color,Partner),
  293. ruut(X1,Y1,Partner),
  294. ruut(X2,Y2,0).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement