📄 ex5.pro
字号:
trace
/* Expert System Shell */
include"resort.pro"
predicates
inference(data_type,integer)
getresponse(integer)
get_first(data_list,data_type,data_list)
process(data_type)
inferencel(data_list,integer)
list_maximum(integer,intelist)
list_max(integer,integer,intelist)
empty(intelist)
mincf(integer,integer,integer)
start
database
fact1(data_type,integer)
clauses
process(Query):-
inference(Query,Cf),
write("Your Question ",Query," has been proved Cf= ",Cf).
process(Query):-
write("Your question ",Query," can not be proved.").
inference(Query,Cf):-
fact1(Query,Cf),!.
inference(Query,Cf):-
not(rule(_,Query,_,_)),!,
write(Query),
getresponse(Cf),
assert(fact1(Query,Cf)).
inference(Query,Cf):-
findall(Cf1,rule(_,Query,_,Cf1),L),
list_maximum(Cf1,L),
rule(_,Query,Cond_list,Cf1),
inferencel(Cond_list,Cf2),
Cf=Cf1*Cf2/100,Cf>=20.
inferencel([],100):-!.
inferencel(Cond_list,Cf):-
get_first(Cond_list,Cond,New_list),
inference(Cond,Cf1),
Cf1>=20,
inferencel(New_list,Cf2),
mincf(Cf1,Cf2,Cf).
getresponse(R):-readint(Ask),
Ask>=0,Ask<=100,!,
R=ASK;
nl,write("Try another answer please"),nl,
getresponse(R).
get_first([H|T],H,T).
list_maximum(Max,[H|T]):-
list_max(Max,H,T).
list_max(S,S,[]).
list_max(Max,S,[H|T]):-
H>=S,list_max(Max,H,T).
list_max(Max,S,[H|T]):-
H<=S,list_max(Max,S,T).
empty([]).
mincf(N1,N2,N2):-N1>N2,!.
mincf(N1,_,N1).
start:-
makewindow(1,2,3," Expert System ",3,6,20,70),
retractall(fact1(_,_)),
consult("fact1.dba"),
write(" What is your query ? "),
readln(NAME),
process(is(Name,two_star)),
save("fact1.dba").
goal
start.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -