Я работаю над последним заданием для своего класса, и мне было интересно, может ли кто-нибудь помочь мне разобраться с этими двумя проблемами (C и D), которые я оставил. Это то, что у меня есть на данный момент. Я не ищу прямой ответ. Может кто-то просто наставить меня примером. Я выполнил а и б задания, которое состоит в том, чтобы найти всех работающих детей и названия семей без детей. Нам были даны некоторые служебные функции, поэтому нам не нужно, например, каждый раз определять ребенка. Вот пример данных генеалогического дерева. Это долго, поэтому я пристроил здесь только одну семью.
family(
person(melvin, brown, date(25,april,1950), unemployed),
person(alice, brown, date(2,september,1967), works(hom, 78000)),
[person(bill, brown, date(18,november,1990), unemployed),
person(grace, brown, date(18,november,1990), works(ibm, 55000)),
person(barbara, brown, date(18,november,1990), unemployed),
person(walter, brown, date(3, october, 1996), unemployed)] ).
, и вот для нас определены следующие качества:
del(X, [X|Tail], Tail).
del(X, [Y|Tail], [Y|Tail1]) :- del(X, Tail, Tail1).
husband(X) :- family(X, _, _).
wife(X) :- family(_, X, _).
child(X) :- family(_, _, Children), member(X, Children).
exists(Person) :- husband(Person); wife(Person); child(Person).
dateofbirth(person(_, _, Date, _), Date).
salary(person(_, _, _, works(_, S) ), S). % Salary of working person
salary(person(_, _, _, unemployed), 0). % Salary of unemployed
Вот моя работа на данный момент :
(a) Названия семей без детей
? - family(_, person(Name, Surname, _, _), [])
(b) всех работающих детей
? – child(person(Name, Surname, _, works (_, _)))
(c) имена семей с работающими женами и безработными мужьями
? – wife(person),
family(_, person(Name, Surname, _, works (_, _)));
husband(person),
family(_, person(Name, Surname, _, unemployed)))
(d) все дети, чьи родители различаются по возрасту не менее чем на 15 лет
- Я действительно не знаю, с чего начать. Потому что я не понимаю, как вы можете минус два возраста родителей логически. Я не знаю, имеет ли это смысл