Write a program to manipulate structure-FAMILY.
[create family structure first]
family(
person( tom,
fox,male, date(7,may,1960), works(bbc, 15200) ), person( ann, fox,female,
date(9,may, 1961), unemployed),
[ person( pat, fox,male, date(5,may,1983), unemployed), person( iim,
fox,male, date(5,may,1983), unemployed) ]).
family(
person( john,
finn,male, date(1,april,1970), works(cnn, 20000) ), person( jane, finn,female,
date(9,august, 1965), works(ndtv, 10000)), [ person( drake, finn,male,
date(5,june,1996), works(ndtv, 15000)), person( kim, finn,female,
date(15,october,1999), unemployed), person( kate, finn,female,
date(31,december,2001), unemployed)]).
family(
person( james,
morrison,male, date(7,may,1965), unemployed), person( gill, morrison,female,
date(9,jan, 1966),works(sony, 152000)), [ person( marshall, morrison,male,
date(5,may,1983), unemployed), person( michael, morrison,male,
date(5,june,1985), unemployed) ]).
family(
person( chris,
lynn,male, date(17,may,1990), works(sony, 192000)), person( marie, lynn,female,
date(10,jan, 1992),works(sony, 152000)), [ ]).
member(X,[X|T]).
member(X,[H|T]):-member(X,T).
husband(X) :- family(X,_,_).
wife(X) :- family(_,X,_).
child(X) :- family(_,_,Y),member(X,Y).
exists(P) :- husband(P);wife(P);child(P).
dob(person(_,_,_,Date,_),Date).
salary(person( _, _, _,_, works( _, S) ), S). salary(person( _, _, _,_,
unemployed ), 0). twins(Child1,Child2) :-
family(_,_,Y),member(Child1,Y),member(Child2,Y),dob(Child1,D1),dob(Child2,D2),D1==D2.
1. Find names of all persons in family database
Input:exists( person( Name, Surname, _,_, _) ).
Output: Name = tom, Surname = fox Name = john, Surname = finn Name
= james,
Surname = morrison Name = chris,
Surname = lynn Name = ann, Surname = fox Name = jane, Surname = finn Name =
gill, Surname = morrison Name = marie, Surname = lynn Name = pat, Surname = fox
Name = iim, Surname = fox
2. Find all children born in specific year
Input: child(X),dob( X, date(_,_,2001)).
Output: X = person(kate, finn, female,
date(31, december, 2001), unemployed)
3. Find all employed wives
Input: wife( person( Name, Surname, _,_, works( _, _) ) ).
Output: Name = jane,
Surname = finn Name = gill,
Surname
= morrison Name = marie, Surname = lynn.
4. Find name of all unemployed people who were born before specific year
Input: exists( person( Name, Surname,_, date( _, _, Year),
unemployed) ),Year <1973.
Output: Name = james, Surname = morrison, Year = 1965 Name = ann, Surname = fox,
Year
= 1961 false.
5. Find name of families with at least 3 children
Input: family( person( _,Name,_,_,_),_,[_,_,_|_] ).
Output: Name = finn
6. Find name of families without children
Input: family( person( _,Name,_,_,_),_,[] ).
Output:
Name
= lynn.
7. Find out name of all employed children
Input: child( person( Name, Surname, _,_, works( _, _) ) ).
Output: Name = drake, Surname = finn
8. Find out names of families having employed wives and unemployed husbands
Input: family( person(
_,Name,_,_,unemployed), person(_,Name,_,_,works(_,_)),_ ).
Output:
Name
= Morrison
9. Define relation “Twins” and find out twins in family database.
Input: twins( person( _, S, _,_, _ ), person( _, S, _,_, _ )).
Output: S = fox
No comments:
Post a Comment