2014-05-22 2 views
1

Я хотел бы написать предикат different_from (Xs, X), который является проверкой, которая преуспевает тогда и только тогда, когда X отличается от всех элементов списка Xs.Список проверяет, что элементы разные

Так запрос

different_from([3,2,5],4) 

удастся, но это следующий запрос должен терпеть неудачу:

different_from([3,2,5],2) 

Поскольку предикат является проверить, не следует экземпляр либо из его аргументов.

заблаговременно за любую помощь, которую вы можете предоставить.

+3

'different_from (Xs, X): - MapList (диф (X), X) .' – false

ответ

2

Это очень простое правило, состоящее из двух пунктов:

  • Первый пункт говорит, что different_from успешна, когда список пуст,
  • Второй пункт говорит, что different_from является успешным, когда первый элемент из списка не соответствует искомому элементу, а также когда different_from для хвоста также успешно.

Вот то же самое написано в синтаксисе Пролог:

different_from([], _). 
different_from([H|T], E) :- E \= H, different_from(T, E). 
+0

большой объяснение спасибо – CompilerSaysNo

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