У меня есть эта база данных на прологе:
family(person( john, cohen, date(17,may,1990), unemployed), person( lily, cohen, date(9,may,1990), unemployed),[ ] ).
family(person( john, armstrong, date(7,may,1988), unemployed), person( lily, armstrong, date(29,may,1961), unemployed), [ ] ).
family(person( eric, baily, date(7,may,1963), works( bbc, 2200)), person( grace, baily, date(9,may,1965), works( ntu, 1000)), [person( louie, baily, date(25,may,1983), unemployed) ] ).
family(person( eric, baily, date(7,may,1963), works( acc, 21200)), person( grace, baily, date(9,may,1965), works( ntnu, 12000)), [person( louie, baily, date(25,may,1983), unemployed) ] ).
family(person( eric, fox, date(27,may,1970), works( bbc, 25200)), person( grace, fox, date(9,may,1971), works( ntbu, 13000)), [person( louie, fox, date(5,may,1993), unemployed) ] ).
husband(X) :- family(X, _, _).
wife(X) :- family(_, X, _).
child(X) :- family(_, _, Children), member(X, Children).
salary(person(_, _, _, works(_, S)), S).
salary(person(_, _, _, unemployed), 0).
Формат: семья (муж, жена, [дети]).У каждого человека в семье есть имя, фамилия, дата рождения, работа и зарплата.
У меня есть задание, которое требует от меня написать следующие правила:
1) Написать прологПравило 'totalIncome / 2' для расчета общего дохода семьи.
2) Напишите пролог-запрос для вывода общего дохода каждой семьи.
Мне удалось получить зарплату длямужья в списке и зарплаты жен в другом списке.
salaries(L) :- findall(X,family(person(_,_,_,works(_,X)),_,_),L).
salaries(L2) :- findall(X,family(_,person(_,_,_,works(_,X)),_),L2).
Кажется, я не могу обойти это, поэтому любая помощь приветствуется.Спасибо