📄 shuifu.bak
字号:
/* input A,B,C.*/
/* notice:C<A. */
domains
int=integer
list=integer*
llist=list*
predicates
go(int,int,int)
fill(int,int,int,int,int,int)
append(list,llist,llist)
member(list,llist)
water(int,int,llist,int,int,int)
writes(llist)
clauses
go(A,B,C):-water(0,0,[],A,B,C);write("fail").
water(C,Y,T,_,_,C):-append([C,Y],T,T1),
writes(T1).
water(X,Y,T1,A,B,C):-fill(X,Y,X1,Y1,A,B),
not(member([X,Y],T1)),
append([X,Y],T1,T2),
water(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
write("A= "),readint(A),
write("B= "),readint(B),
write("C= "),readint(C),
go(A,B,C).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -