Advertisement
elvecent

Prolog3

Sep 28th, 2016
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.97 KB | None | 0 0
  1. :- initialization(consult(kinship)).
  2.  
  3. rec :- consult(prog).
  4.  
  5. pred(X,Y) :-
  6.     parent(X,Y);
  7.     parent(X,Z), pred(Z,Y).
  8.  
  9. brother(X,Y) :-
  10.     male(X),
  11.     male(Y),
  12.     parent(M,X),
  13.     female(M),
  14.     parent(F,X),
  15.     male(F),
  16.     parent(M,Y),
  17.     parent(F,Y),
  18.     X \= Y.
  19.  
  20. married0(X,Y) :-
  21.     parent(X,Z),
  22.     parent(Y,Z),
  23.     X \= Y.
  24.  
  25. married(X,Y) :-
  26.     setof(Y,married0(X,Y),Lst),
  27.     member(Y,Lst).
  28.  
  29. husband(X,Y) :-
  30.     married(X,Y),
  31.     male(X).
  32.  
  33. cousin0(X,Y) :-
  34.     parent(XP,X),
  35.     parent(YP,Y),
  36.     parent(Z,XP),
  37.     parent(Z,YP),
  38.     XP \= YP,
  39.     \+ married(XP,YP),
  40.     X \= Y.
  41.  
  42. cousin(X,Y) :-
  43.     setof(Y,cousin0(X,Y),Lst),
  44.     member(Y,Lst).
  45.  
  46. num_of_children(X,N) :-
  47.     setof(Y,parent(X,Y),Lst),
  48.     length(Lst,N).
  49.  
  50. nephews0(X,Y) :-
  51.     parent(Z,Y),
  52.     parent(Z,YY),
  53.     parent(YY,X),
  54.     Y \= YY.
  55.  
  56. nephews(X,Y) :-
  57.     setof(Z,nephews0(Z,Y),NS),
  58.     sort(NS,X).
  59.  
  60. common_child(X,Y,Z) :-
  61.     parent(X,Z),
  62.     parent(Y,Z).
  63.  
  64. family([F,M|C]) :-
  65.     married(F,M),
  66.     male(F),
  67.     setof(CC,common_child(F,M,CC),CCC),
  68.     sort(CCC,C).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement