Проверка повторения в списке - Пролог - PullRequest
0 голосов
/ 26 января 2012

Я пытаюсь написать hasRepetition, который «получает» список и возвращает true, если и только если в нем есть повторы.

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

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

Ответы [ 2 ]

3 голосов
/ 26 января 2012

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

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

1 голос
/ 26 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...