我已经获得以下代码:
returnValues(Value):-
collection(X,Y,Z),
total([X,Y|Z],Value).
这确实有效,但它总结了X,Y和Z.我正在寻找它来总结Z 。 Z是一个列表,我想总结Z的值 总计是:
total([],0).
total([Item|List],Sum):-
salary(Item,A),
total(List,Rest),
Sum is B + Rest.
我已经调整了几次代码,因此它只给出了X和Z的值,只有Y和Z的值,但我还没有能够得到Z的值。
示例输入:
questionChildrenIncome(Name,Surname,CombinedIncome):-
family(Husband,person(Name,Surname,_,_),Children),
total(Children,CombinedIncome),
CombinedIncome<100000,
member(Child,Children),
salary(Child,Salary),
Salary<30000.
答案 0 :(得分:0)
你可以忽略X,Y像:
returnValues(Value):-
collection(_,_,Z),
total(Z,Value).
您可以写下第二条评论:
exclude([],[]).
exclude([H|T],[H|T1]):-salary(H,Salary),Salary<30000,exclude(T,T1).
exclude([H|T],T1):- salary(H,Salary),Salary>=30000,exclude(T,T1).
并改为:
questionChildrenIncome(Name,Surname,CombinedIncome):-
family(Husband,person(Name,Surname,_,_),Children),
total(Children,CombinedIncome),
CombinedIncome<100000,
exclude(Children,Children)
。 您还可以编写更简单的排除谓词,如:
exclude([]).
exclude([H|T]):-salary(H,Salary),Salary<30000,exclude(T).
只有当所有孩子都有薪水<30000时才会成功。