Пролог проверить, существует ли a или b в фактах - PullRequest
1 голос
/ 10 марта 2020

Я хочу написать правило, которое позволит мне проверить, существует ли в данных фактах mov ie или актер.

Примеры примеров

starsin(ice_age,compton__doug).
starsin(hulk,wryn__rhiannon_leigh).
starsin(hulk,turman__john).
starsin(hook,mcnatt__adam). 

Ввод запроса

?- exists(ice_age).
true.
?- exists(turman_john).
true
?- exists(bob).
false

Правило написано

exists(Movie,Actor) :- starsin(Movie,Actor).

Моя проблема в том, что мое правило состоит в том, что он не проверяет mov ie или актера. Я вынужден ввести запрос:

?- exists(hulk,Y) or exists(X,turman_john) 

Я хочу проверить mov ie или actor.Help.

1 Ответ

1 голос
/ 10 марта 2020

Вы можете просто проверить, можно ли объединить запрашиваемый элемент с первым или вторым параметром одного из starsin/2 фактов:

exists(<b>Movie</b>) :-
    starsin(<b>Movie</b>, _).
exists(<b>Actor</b>) :-
    starsin(_, <b>Actor</b>).

Здесь подчеркивание _ - это переменная, которая нас это не волнует.

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