检查列表中的重复 - Prolog

时间:2012-01-26 17:06:49

标签: prolog

我正在尝试写一个'recives'列表的hasRepetition,当且仅当它有重复时才返回true。

我写道:hasRepetition([Head | Tail]): - 成员(Head,Tail); hasRepetition(Tail)。

7? - hasRepetition([1,1])。 错误:toplevel:未定义的过程:hasRepetition / 1(DWIM无法纠正目标)

2 个答案:

答案 0 :(得分:3)

您的程序定义没问题。

我想您忘了查询您的代码,例如consult(name).其中name是包含您代码的文件的名称。

答案 1 :(得分:1)

我认为@gusbro已经给你答案了(+1)。但请注意,您编写的程序“非常低效。”

首先,应该使用memberchk / 2而不是member。然后,在分离之前进行切割。否则,如果调用回溯(例如,在findall中......)

,则代码将非常慢