Prolog,家庭树方法如何说他们是混蛋



例如,如果我有这个祖先,我该怎么说是谁是混蛋儿子或女儿?

ancestor(frank,mary).
ancestor(frank,andrew).
ancestor(frank,jake).
ancestor(joanne,mary).
ancestor(joanne,andrew).
married(frank,joanne).

法律(我没有发布更多的代码,因为它与此无关)

mother(X,Y) :- ancester(X,Y),gender(X,female).
father(X,Y) :- ancester(X,Y),gender(X,male).
son(X,Y) :- father(Y,X).
sister(X,Y) :- ancester(Z,X),ancester(Z,Y),X==Y,gender(Y,female).
brother(X,Y) :- ancester(Z,Y),ancester(Z,X), X==Y,gender(Y,male).
grandfahter(X,Y) :- ancester(X,Z),ancester(Z,Y),gender(X,male).
grandmother(X,Y) :- ancester(X,Z),ancester(Z,Y),gender(X,female).

只是为了根据评论来汇总此问题的答案。

假设该人是一个混蛋,如果父母未婚,可以写

bastard(X) :- father(F, X), mother(M, X), + married(F, M).

如果您的序言方言不支持+(尽管它在ISO标准中),则应使用not

bastard(X) :- father(F, X), mother(M, X), not(married(F, M)).

相关内容

最新更新