我正试图在Prolog中建立一个关系模型,但姐妹关系结果证明是失败的。我想知道什么是一个很好的解决方案。我是初学者,这是我的第一个项目,欢迎任何帮助。
man(adam).
man(peter).
man(paul).
man(carlos).
man(willem).
woman(marry).
woman(eve).
woman(greta).
woman(lisa).
parent(adam, peter).
parent(eve, peter).
parent(adam, paul).
parent(marry, paul).
parent(adam, willem).
parent(adam, lisa).
parent(eve, willem).
parent(eve, lisa).
parent(greta, adam).
parent(carlos, adam).
father(F, C) :-
man(F),
parent(F, C).
mother(M,C) :-
woman(M),
parent(M, C).
grandparent(P, C):-
parent(P, K),
parent(K, C).
sister(x,y) :-
woman(x),
mother(m, x),
father(f, x),
mother(m, y),
father(f, y).
答案 0 :(得分:1)
您需要在sister\2
谓词中使用大写字母作为变量。在你的代码中你有小写字母,它们是原子,所以除非你有人叫x
,y
,f
和m
,否则这将永远失败。
另外,添加X \= Y
以防止X成为她自己的妹妹。