程序不适用于序言中的每个模式
procedure doesn't work for evey pattern in prolog
我试着找出一个人有多少 children。创建了我的示例 space 并在查找过程中我应该计算 children 的数量并打印值。
样本input/output:
?- find(joe,Result).
false.
我试过这样改变find(X,R)
:
find(X,R) :-
R is 0 .
R is R+1 ,
father(X,Y).
write(R).
然后input/output就变成了这样
?- 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).
要求出一个人所有children的个数,需要收集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.
我试着找出一个人有多少 children。创建了我的示例 space 并在查找过程中我应该计算 children 的数量并打印值。
样本input/output:
?- find(joe,Result).
false.
我试过这样改变find(X,R)
:
find(X,R) :-
R is 0 .
R is R+1 ,
father(X,Y).
write(R).
然后input/output就变成了这样
?- 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).
要求出一个人所有children的个数,需要收集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.