2010-03-19 145 views
1

我得到了几个结果,输出相同。如何避免序言中的重复

我只想得到jack,jane一次,但我得到了两次。

我该如何避免这种情况?我试过setof,但我无法完成。请有人可以帮我解决这个问题吗?

+0

可能您的算法只是创建了两次结果。没有看到源代码,很难说为什么。 – sth

回答

1

此问题重复于"How to stop repetitions in rules in prolog"

的答案是做这样的事情:

solve :- 
    marriedcouple(Dad, Mum), 
    not(found(marriedcouple(Dad, Mum))), 
    assert(found(marriedcouple(Dad, Mum))), 
    write([Dad, Mum]), 
    nl, 
    fail. 

阅读full answer更多细节。

+0

我试过这个解决方案,但它不工作。我真的不知道为什么。它说那些undefined – Nubkadiya

+1

@Pradeep - 你试过什么,什么“那些”是未定义的? – Enigmativity