List prolog,我有结构列表如何提取数据并返回其他结构的新列表?
我在prolog中实现了家庭程序,但在实现一些规则时遇到了问题 首先,我实施这条规则:List prolog,我有结构列表如何提取数据并返回其他结构的新列表?,list,prolog,List,Prolog,我在prolog中实现了家庭程序,但在实现一些规则时遇到了问题 首先,我实施这条规则: number_of_children_couple(_list):- findall(children(_f,_m,_n),children(_f,_m,_n),_list). 退货清单: 19 ?- number_of_children_couple(_list). _list = [children(mordechai, miriam, 1), children(salax, naima, 1),
number_of_children_couple(_list):-
findall(children(_f,_m,_n),children(_f,_m,_n),_list).
退货清单:
19 ?- number_of_children_couple(_list).
_list = [children(mordechai, miriam, 1), children(salax, naima, 1), children(eli, bella, 2), children(..., ..., ...)|...].
我的问题是如何实施:
number_of_children_person(_list28,list_person):-
第一个论点:
_list28 = _list //the above list ,that return from the rule
第二个论点是:
list_person = [children(mordechai, 1), children(salax, 1),children(eli, 2),children(..., ...)|...]
我还使用了:
%_num is number of children for couple
children(_father,_mother,_num):-
couple(_mother,_father),
findall(_child,parents(_mother,_father,_child),_children),
length1(_children,_num).
%_num是_person的子项数
children(_person,_num):-
gender(_person,_),
findall(_child,parent(_person,_child),_list),
length1(_list,_num).
如果您想从children/3结构中删除一个参数,可以通过多种方式完成,最简单的是
number_of_children_person([],[]).
number_of_children_person([children(A,_,C)|R],[children(A,C)|T]) :-
number_of_children_person(R,T).
或者更简洁地说
number_of_children_person(L3,L2) :-
findall(children(A,C), member(children(A,B,C),L3), L2).
从findall/3开始绝对不是一个好主意。把《序言艺术》看作是一篇很好的介绍性文章,但我也希望在列表L2 childrenB,C中不仅包括childrenA,我想到这样的事情:“孩子的数量”3,L2:-“findallchildrenA,C,memberchildrenA,B、 C,L3,L4,findallchildrenB,C,memberchildrenA,B,C,L3,L5,concL4,L5,L2。