Advertisement
lameski

Prolog Familija/Lica

Jan 12th, 2017
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. lice(1,petko,petkovski,m,datum(1,3,1950),kratovo,skopje).
  2. lice(2,marija,petkovska,z,datum(30,5,1954),kumanovo,skopje).
  3. lice(3,ljubica,petkovska,z,datum(29,11,1965),skopje,skopje).
  4. lice(4,vasil,vasilev,m,datum(8,4,1954),bitola,bitola).
  5. lice(5,elena,vasileva,z,datum(19,6,1958),resen,bitola).
  6. lice(6,krste,krstev,m,datum(9,8,1948),veles,veles).
  7. lice(7,biljana,krsteva,z,datum(13,8,1949),veles,veles).
  8. lice(8,igor,krstev,m,datum(26,10,1971),veles,skopje).
  9. lice(9,kristina,krsteva,z,datum(30,5,1974),kumanovo,skopje).
  10. lice(10,julija,petrova,z,datum(30,5,1978),skopje,skopje).
  11. lice(11,bosko,petkovski,m,datum(13,11,1981),skopje,skopje).
  12. lice(12,gjorgji,vasilev,m,datum(15,7,1978),bitola,bitola).
  13. lice(13,katerina,petkovska,z,datum(11,12,1979),bitola,skopje).
  14. lice(14,petar,vasilev,m,datum(21,2,1982),skopje,skopje).
  15. lice(15,andrej,krstev,m,datum(3,8,1998),skopje,skopje).
  16. lice(16,martina,petkovska,z,datum(5,12,2005),skopje,skopje).
  17. familija(1,2,[9,10]).
  18. familija(1,3,[11]).
  19. familija(4,5,[12,13,14]).
  20. familija(6,7,[8]).
  21. familija(8,9,[15]).
  22. familija(11,13,[16]).
  23.  
  24. %predci(Sifra,L)
  25. %ako polovite isti vrati ja sifrata
  26. clen(X,[X|_]).
  27. clen(X,[_|L]) :- clen(X,L).
  28.  
  29. dodadi([],L, L).
  30. dodadi([X|O],L,[X|NL]) :- dodadi(O,L,NL).
  31.  
  32. ist_pol(X,L):- izdeli_pol(X,P),findall(Br,lice(Br,_,_,P,_,_,_),L).
  33.  
  34. izdeli_pol(X,P):-lice(X,_,_,P,_,_,_).
  35.  
  36. nema_rod(X):-findall(X,(familija(_,_,L),clen(X,L)),L1),L1 = [].
  37.  
  38. tatko(X,T):- familija(T,_,L),clen(X,L).
  39. majka(X,T):- familija(_,T,L),clen(X,L).
  40.  
  41. roditeli(X,L):-findall(C,(familija(C,_,L1),clen(X,L1);familija(_,C,L2),clen(X,L2)),L).
  42.  
  43. ist_pol_rod(X,R):-roditeli(X,L1),izdeli_pol(X,P),lice(R,_,_,P,_,_,_),clen(R,L1).
  44.  
  45. pred(X,Y):- (familija(X,_,L),clen(Y,L));
  46. (familija(_,X,L),clen(Y,L)).
  47. pred(X,Y):- ((familija(X,_,L),clen(Z,L));
  48. (familija(_,X,L),clen(Z,L))),pred(Z,Y).
  49.  
  50. polovi([],_,[]).
  51. polovi([X|O],Pol,[X|L]):-izdeli_pol(X,P),Pol == P,polovi(O,Pol,L).
  52. polovi([X|O],Pol,L):-izdeli_pol(X,P),Pol \== P,polovi(O,Pol,L).
  53.  
  54. abs(X,Y):-
  55. X >= 0,Y is X.
  56.  
  57. abs(X,Y):-
  58. X <0, Y is -X.
  59.  
  60. den_ragjanje(X,T):-lice(X,_,_,_,datum(D,M,_),_,_),T is D+M*30.
  61.  
  62. ok_datum([],_,[]).
  63. ok_datum([X|L],Dat,[X|L2]):-den_ragjanje(X,D), abs((Dat-D),A),A<7,ok_datum(L,Dat,L2).
  64. ok_datum([X|L],Dat,L2):-den_ragjanje(X,D), abs((Dat-D),A),A>7,ok_datum(L,Dat,L2).
  65.  
  66.  
  67. predci(Sifra,L):-findall(Predci,pred(Predci,Sifra),L1),
  68. izdeli_pol(Sifra,Pol),polovi(L1,Pol,L2),den_ragjanje(Sifra,T)
  69. ,ok_datum(L2,T,L).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement