Sunday, 16 June 2019

Introduce concept and use of structures. GTU Prolog Artificial Intellegence



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

It's time To increase blogging capability. To have a chance to contribute in digital world. Any Interested People who want to make t...