1

我正在尝试在 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).
4

1 回答 1

3

sister\2您需要对谓词中的变量使用大写字母。在您的代码中,您有小写字母,它们是原子,因此除非您有人称为x,和y,否则这将始终失败。fm

另外,添加X \= Y以防止 X 成为她自己的妹妹。

于 2012-05-15T08:39:08.457 回答