2014-12-02 6 views
1

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

example user input: 
SYMPTOM_IN(fever, 150). 
SYMPTOM_IN(vomiting, 1). 

После каждого ввода печатается список возможных заболеваний.

Этот процесс повторяется до тех пор, пока не будет поставлен диагноз или пока не будет определено, что он не может, в какой момент будут предложены тесты, и пользователь может ввести данные относительно испытаний аналогичным образом, в конечном счете, диагностика.

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

Я бы очень признателен за любую помощь.

Спасибо.

EDIT:

Могу ли я взять два значения из вызова SYMPTOM_IN, использовать их, чтобы сделать что-то вроде симптома (X, лихорадка, 150), и утверждают, выход из этого, чтобы сохранить его (например, в. ответьте на вопрос this)? Тогда, может быть, я смогу сделать то же самое для следующего звонка и принять объединение этих двух списков?

ответ

0

Вы хотите создать экспертную систему . Об этом в сети много информации. Например:

https://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_17.html http://www.amzi.com/ExpertSystemsInProlog/02usingprolog.php

Существует также много хорошей информации о переполнении стека.

Вкратце: вы должны знать, как правильно использовать assert и retract.