Как правильно обратиться к функции в Пролог, чтобы она вернула ответ?
Как правильно обратиться к этой функции купил_путёвку(x,y), чтобы она вернула ответ, например отвела точно на такой вопрос, где Иван или Петя купили путёвку, я пытаюсь обратится следующем образом купил_путёвку(X,Y), но мне выдаёт сообщение false, хотя должен выдать ответ, например , оптисофт или авиатор.
деньги('Ivan',есть).%есть деньги
деньги('Petya',есть).%есть деньги
паспорт('Ivan',есть).%у Ивана есть паспорт
паспорт('Petya',есть).%у Пети есть паспорт
ближе(авиатор,оптисофт).%Оптисофт ближе, чем авиатор
купил_путёвку(x,y):-ближе(x,y),деньги(x,y),паспорт(x,y).
Ответы (1 шт):
Автор решения: Anton Danilov
→ Ссылка
Как правильно обратиться к этой функции купил_путёвку(x,y), чтобы она вернула ответ, например отвела точно на такой вопрос, где Иван или Петя купили путёвку...
Решение:
имеет(иван, деньги).
имеет(иван, паспорт).
имеет(петя, деньги).
имеет(петя, паспорт).
ближе(авиатор, оптисофт).% Оптисофт ближе, чем авиатор
купил_путёвку(Person, TourOp):-
ближе(_, TourOp),
имеет(Person, деньги),
имеет(Person, паспорт).
Запрос:
?- купил_путёвку(Person, TourOp).
Person = иван,
TourOp = оптисофт
Next:
Person = петя,
TourOp = оптисофт