0
我剛開始首次使用Prolog,並且必須實施專家系統。我想要診斷某人是否擔心黑暗,如果他/她似乎無法在黑暗中看到事物並且似乎在黑暗中感覺不到保護。這裏是我的代碼爲這種情況:剛剛開始Prolog ...需要幫助製作小型專家系統
fear(dark) :- positive(cantSee), positive(unprotectedInDark).
但是,我不認爲我確定這是正確的代碼工作。這裏是我的代碼做出了積極的(X)「是」:
positive(X) :- ask(X, yes).
ask(X, yes) :- write(X), write('? '), read(yes).
同樣的,這裏是我的代碼爲負(X):
negative(X) :- ask(X, no).
ask(X, no) :- write(X), write('? '), read(no).
這是正確的代碼,我上面的問題呢?另外,如何讓我的專家系統「記住」一個答案?這個代碼是在我的腦海裏,但我不認爲這一個工程:
remember(X, yes) :- assert(ask(X, yes)).
remember(X, no) :- assert(ask(X, no)).
通過記住,你的意思是,你希望你的程序記住它,而正在執行它,或者你關閉該文件,然後再執行它甚至後? – Shevliaskovic
記住,我的意思是說,如果我對某個問題回答「是」,系統會將答案保留爲「是」,並且不能更改它。例如,一旦答案是肯定的,我不能將它改變爲否。 – guest5555
專家系統似乎是一個剛剛學習Prolog的積極的第一個項目。如果您不希望覆蓋寫入的答案,則可以檢查它是否已被聲明,並且不收回並斷言新的答案。還是有一個原因,不適合你的情況? – lurker