2012-01-26 3 views
0

Я пытаюсь написать hasRepetition, который «возвращает» список и возвращает true тогда и только тогда, когда он имеет повторения в нем.Проверка повторения в списке - Prolog

Я написал: hasRepetition ([Head | Tail]): - member (Head, Tail); hasRepetition (Хвост).

7? - hasRepetition ([1,1]). ОШИБКА: toplevel: Неопределенная процедура: hasRepetition/1 (DWIM не удалось исправить цель)

ответ

3

Ваше определение процедуры в порядке.

Я думаю, вы забыли проконсультироваться с вашим кодом, то есть consult(name)., где имя - это имя файла с вашим кодом.

1

Я думаю, что @gusbro уже дает вам ответ (+1). Но учтите, что процедура, которую вы написали, «очень неэффективна».

Во-первых, memberchk/2 вместо члена должен использоваться. Затем поставьте разрез перед дизъюнкцией. В противном случае ваш код будет очень медленным, если вызывается обратное отслеживание (например, внутри поиска ...)

Смежные вопросы