📄 实验二.pro
字号:
domains
state=symbol
DATABASE-mydatabase
open(state,integer)
closed(integer,state,integer)
res(state)
open1(state,integer)
min(state,integer)
mark(state)
fail_
PREDICATES
solve
search(state,state)
result
searching
step4(integer,state)
step56(integer,state)
equal(state,state)
repeat
resulting(integer)
road(state,state)
rule(state,state)
GOAL
solve.
CLAUSES
solve:-search(s0,sg),result.
search(Begin,End):-
retractall(_,mydatabase),
assert(closed(0,Begin,0)),
assert(open(Begin,0)),
assert(mark(End)),
repeat,
searching,!.
result:-
not(fail_),
retract(closed(0,_,0)),
closed(M,_,_),
resulting(M),!.
result:-beep,write("sorry don't find a road!").
searching:-
open(State,Pointer),
retract(open(State,Pointer)),
closed(No,_,_),No2=No+1,
asserta(closed(No2,State,Pointer)),
!,step4(No2,State).
searching:-assert(fail_).
step4(_,State):-mark(End),equal(State,End).
step4(No,State):-step56(No,State),!,fail.
step56(No,StateX):-
rule(StateX,StateY),
not(open(StateY,_)),
not(closed(_,stateY,_)),
assertz(open(StateY,No)),
fail.
step56(_,_):-!.
equal(X,X).
repeat.
repeat:-repeat.
resulting(N):-closed(N,X,M),asserta(res(X)),resulting(M).
resulting(_):-res(X),write(X),nl,fail.
resulting(_):-!.
rule(X,Y):-road(X,Y).
road(s0,s4).
road(s4,s0).
road(s4,s1).
road(s1,s4).
road(s1,s2).
road(s2,s1).
road(s2,s3).
road(s3,s2).
road(s2,s5).
road(s5,s2).
road(s4,s7).
road(s7,s4).
road(s4,s5).
road(s5,s4).
road(s5,s6).
road(s6,s5).
road(s5,s8).
road(s8,s5).
road(s8,s9).
road(s9,s8).
road(s9,sg).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -