я пытаюсь использовать базу данных фактов болезни
symptom(shingles,headache).
symptom(shingles,fever).
symptom(shingles,malaise).
symptom(shingles,headache).
symptom(smallpox,fever).
symptom(smallpox,rash).
и сравнить ее со списком симптомов от пользователя.В настоящее время я могу получить симптомы от пользователя и добавить заболевание в список, однако не могу понять, как пройтись по базе данных entier, чтобы добавить все возможные заболевания.
start:-
consult(diseases1),
getSymptoms(Symptoms),
write(Symptoms).
welcome:-
write('Welcome to the Disease Diagnostic Center'),nl,nl.
getSymptoms(Symptoms) :-
write('Please enter symptoms now, enter "Done" when finished: ' ),
read_string(user, "\n", "\r", _, Response),
(
Response == "Done"
->
Symptoms = []
;
atom_string(Symptom,Response),
valid_symptom(Symptom,Symptoms)
).
valid_symptom(Symptom,Symptoms) :-
(
symptom(_,Symptom)
->
getSymptoms(Symptoms0),
foreach(symptom(Y,Symptom),write(Y))
;
format('Invalid symptom: `~w''~n',[Symptom]),
getSymptoms(Symptoms0),
Symptoms = Symptoms0
).
Итакнапример, пользователь вводит лихорадку в качестве одного из симптомов, тогда в списке должны быть гонт и оспа.В настоящее время я могу записать каждое возможное заболевание на экран, но я не уверен, чем заменить запись, чтобы иметь возможность добавлять каждое из них в список.