我刚开始使用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)).
答案 0 :(得分:0)
如果问题已经得到解答,可能会问/ 2应该检查。
:- dynamic remember/2.
ask(What, YN) :- remember(What, YN), !.
ask(What, YN) :- write(What), write(?),
read(YN), /* should validate user'answer */,
assertz(remember(What, YN)).