Простая программа Пролог - PullRequest
1 голос
/ 17 февраля 2011

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

Но я проваливаюсь даже в самых простых частях!Я резко уменьшил размер проблемы, чтобы посмотреть, что я могу сделать.Ниже моя база знаний:

selected(A) :- implied(A).
implied(B) :- implies(A,B),selected(A).

implied(option_one).
implies(option_one,option_two).

И когда я запрашиваю:

selected(X).

Я получаю только option_two.

Кажется, что есть что-то очень простоеЯ не понимаю здесь, но мне кажется, что если option_one также должен вернуться в этот список (тем более, что один из фактов «подразумевается (option_one)»).

Если это имеет значение, япопробовал это, используя P #, а также SWI-Prolog, которые дают тот же результат.

1 Ответ

3 голосов
/ 17 февраля 2011

Когда у вас есть ваш первый ответ X = option_two нажмите ; , чтобы получить следующий ответ

?- selected(X).
X = option_two ;
X = option_one.

Или вы можете использовать что-то подобное для показа всех подходящих вещей:

?- selected(X), writeln(X), fail.
option_two
option_one
false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...