📄 水.txt
字号:
/*trace*/
domains
int=integer
list=integer*
llist=list*
predicates
go
fill(int,int,int,int,int,int)
append(list,llist,llist)
member(list,llist)
pull(int,int,llist,int,int,int)
writes(llist)
clauses
go:-A=4,B=3,C=2,
pull(0,0,[],A,B,C);
write("fail").
pull(C,Y,T,_,_,C):-append([C,Y],T,T1),
writes(T1).
pull(X,Y,T1,A,B,C):-fill(X,Y,X1,Y1,A,B),
not(member([X,Y],T1)),
append([X,Y],T1,T2),
pull(X1,Y1,T2,A,B,C).
append(H,T,[H|T]).
fill(X,Y,M,Y,M,_):-X>=0,X<M.
fill(X,Y,X,N,_,N):-Y>=0,Y<N.
fill(X,Y,0,Y,M,_):-X>0,X<=M.
fill(X,Y,X,0,_,N):-Y>0,Y<=N.
fill(X,Y,M,Y1,M,_):-U=M-X,Y1=Y-U,P=X+Y,P>=M,Y>0.
fill(X,Y,X1,N,_,N):-P=X+Y,P>=N,X>0,U=N-Y,X1=X-U.
fill(X,Y,0,Y2,_,N):-P=X+Y,P<=N,X>0,Y2=X+Y.
fill(X,Y,X2,0,M,_):-P=X+Y,P<=M,Y>0,X2=X+Y.
member(H,[H]).
member(H,[H|_]).
member(H,[_|T]):-member(H,T).
writes([[A,B]]):-write(A,' ',B),nl.
writes([[A,B]|T]):-writes(T),
write(A,' ',B,' '),nl.
goal
go
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -