Пролог проверяет, являются ли два значения членами списка - PullRequest
1 голос
/ 09 ноября 2019

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

  • member_of, который является истинным, если данный элемент является частью предоставленного списка
  • member_8, который является истинным, если 8 является частью предоставленного списка
  • member_7_or_8, который является истинным, если 7 или 8 являются частью предоставленного списка
  • member_7_and_8, который является истинным, если 7и 8 - часть предоставленного списка

Я смог решить все предикаты, кроме последнего. Можете ли вы дать мне подсказку, как это решить?

member_of(E,[E|_]). 
member_of(E,[_|R]):-member(E,R).

member_8([8|R]).
member_8([_|R]):-member_8(R).

member_7_or_8([7|R]).
member_7_or_8([8|R]).
member_7_or_8([_|R]):-member_7_or_8(R).

1 Ответ

0 голосов
/ 10 ноября 2019

Решение состоит в том, чтобы иметь предикат "помощник", который позволяет вам проверять, является ли элемент членом данного списка. С помощью этого предиката можно проверить наличие нескольких элементов. Например,

member_of(E,[E|_]). 
member_of(E,[_|R]):-member(E,R).
member_7_and_8(L):-member_of(7,L),member_of(8,L).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...