我试图找出一个人有多少个孩子。创建了我的示例空间,在查找过程中,我应该计算子项的数量并打印该值。
示例输入/输出:
?- find(joe,Result).
false.
我试图像这样更改find(X,R)
:
find(X,R) :-
R is 0 .
R is R+1 ,
father(X,Y).
write(R).
然后它的输入/输出变得像那样
?- find(joe,R).
R = 0.
我尝试了我对prolog的了解,但我认为我没有什么知识可以完成这项任务。欢迎所有建议。感谢您的所有兴趣。
:- [library(clpr)].
mother(susan, sue).
father(joe, eric).
father(joe, smith).
father(joe, barrack).
father(sue, john).
father(eric, bill).
father(bill, george).
find(X,R):-
R is 0,
R is R+1 ,
father(X,Y).
答案 0 :(得分:2)
要查找特定人员的所有孩子的数量,您需要收集father(Father, Children)
或mother(Mother, Children)
的所有解决方案并对其进行统计。例如:
number_of_childrens(Person, N) :-
findall(Children, (father(Person, Children); mother(Person, Children)), Childrens),
length(Childrens, N).
例如:
?- number_of_childrens(joe, N).
N = 3.