📄 ex1.pro
字号:
/* Expert System Shell */
include"resort.pro"
predicates
inference(data_type,integer)
process_facts(data_list,integer)
getresponse(integer)
get_first(data_list,data_type)
delete(data_type,data_list,data_list)
process(data_type)
check_ans(symbol,symbol)
check_fact(data_type,integer)
mincf(integer,integer,integer)
start
database
fact1(data_type,integer)
clauses
process(Query):-
inference(Query,Cf),Cf>=20,
write("Your Question ",Query," has been proved.",Cf).
process(Query):-
write("Your question ",Query," can not be proved.").
inference(Query,Cf):-
fact1(Query,Cf).
inference(Query,Cf):-
rule(No,Query,Cond_list,Cf1),!,
get_first(Cond_list,Cond),
inference(Cond,Cf21),
delete(Query,Cond_list,New_list),
process_facts(New_list,Cf22),!,
nl,write(Cf21),nl,write(Cf22),
mincf(Cf21,Cf22,Cf2),nl,write(Cf2),nl,
Cf=Cf1*Cf2/100,write(Cf).
inference(Query,Cf):-
check_fact(Query,Cf).
process_facts([],100). /* no more facts left */
process_facts(Cond_list,Cf):-
get_first(Cond_list,Prop),
check_fact(Prop,Cf1),
delete(Prop,Cond_list,New_list),
process_facts(New_list,Cf2),
mincf(Cf1,Cf2,Cf).
check_fact(Fact,Cf):-
not(fact1(Fact,_)),!,
write(Fact),
getresponse(Cf),
assert(fact1(Fact,Cf)).
check_fact(Fact,Cf):-
fact1(Fact,Cf).
getresponse(R):-readint(Ask),
% check_ans(Ask,Rep),!,
R=ASK;
nl,write("Try another answer please"),nl,
getresponse(R).
check_ans(yes,y).
check_ans(y,y).
check_ans(n,n).
check_ans(no,n).
get_first([H|_],H).
delete(_,[],[]).
delete(H,[H|T],T):-!.
delete(Token,[H|T],[H|R]):-!,
delete(Token,T,R).
start:-
makewindow(1,2,3,"window 1 ",3,6,20,60),
retractall(fact1(_,_)),
consult("fact1.dba"),
write(" input data "),
readln(NAME),
process(is(Name,two_star)),
save("fact1.dba").
mincf(N1,N2,N2):-N1>N2,!.
mincf(N1,_,N1).
goal
start.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -