Prolog函数返回重复的
我正在努力学习prolog,我正在解决一个问题,我有两个函数:Prolog函数返回重复的,prolog,Prolog,我正在努力学习prolog,我正在解决一个问题,我有两个函数: findSiblings(X,L):-sibling(X,L). sibling(X,Y):-parent(Z,X),parent(Z,Y). 其中X和Y是名称,L是返回值。我想让findSiblings函数返回X的兄弟姐妹的名字,它确实返回了。然而,名字会被打印两次,因为它匹配父母双方。我无法更改兄弟姐妹函数,因为它依赖于一个家族树,其中唯一的关系是父(乔,鲍勃)。有没有办法解决这个问题 为了澄清,假设丹尼尔和马克是兄弟 fi
findSiblings(X,L):-sibling(X,L).
sibling(X,Y):-parent(Z,X),parent(Z,Y).
其中X和Y是名称,L是返回值。我想让findSiblings
函数返回X的兄弟姐妹的名字,它确实返回了。然而,名字会被打印两次,因为它匹配父母双方。我无法更改兄弟姐妹
函数,因为它依赖于一个家族树,其中唯一的关系是父(乔,鲍勃)
。有没有办法解决这个问题
为了澄清,假设丹尼尔和马克是兄弟
findSiblings(daniel,L).
返回
Mark;
Mark
对于给定的代码,以下内容可能会有所帮助(注意
X\=Y
):
(在在线IDE中尝试:)对于给定的代码,以下内容可能会有所帮助(注意
X\=Y
):
(在在线IDE中试用:)如果mark有父亲和母亲作为父母,它可以复制mark的原因 这会造成重复呼叫,例如
parent(john,daniel) -> parent(john,mark)
然后
parent(mary,daniel) -> parent(mary,mark)
如果马克有父亲和母亲作为父母,它可能复制马克的原因 这会造成重复呼叫,例如
parent(john,daniel) -> parent(john,mark)
然后
parent(mary,daniel) -> parent(mary,mark)
你应该提供一份报告。我们应该能够运行您的代码并查看您得到的结果。您应该提供一个。我们应该能够运行您的代码并查看您得到的结果。