我很难理解为什么我的解决方案"实现一个谓词find_in(X,Y)
,如果X在Y或X中,则可以在Y中的对象中找到。"
我想出了一个
find_in(X,Y):-in(X,Y);in(Y,Z),in(Z,X)
但这是错的,所以我想知道如何正确地做到这一点,并理解为什么我的答案是错误的。
答案 0 :(得分:3)
正如Dirk的回答所指出,你可能会交换X
和Y
。
为了清关,我会拆分案件。
find_in(X,Y) :- in(X,Y).
find_in(X,Y) :- in(X,Z), in(Z,Y).
作为补充,您可能希望深入多层次。这只是一个小小的调整。
find_in(X,Y) :- in(X,Y).
find_in(X,Y) :- in(X,Z), find_in(Z,Y).
例如,如果a
位于b
,b
位于c
,依此类推。find_in(a,z)
也将评估为true。
答案 1 :(得分:2)
看起来您在子句的第二部分交换了X和Y:
find_in(X,Y):-in(X,Y);in(X,Z),in(Z,Y).
编辑:添加了缺失的'。'在条款的最后。