shuifu3.pro

来自「人工智能课程学习中的作业」· PRO 代码 · 共 35 行

PRO
35
字号
domains
	list=integer*
	llist=list*
predicates
	go
	fill(integer,integer,integer,integer,integer,integer)
	append(list,llist,llist)
	member(list,llist)
	pull(integer,integer,llist,integer,integer,integer)
	wri(llist)
clauses
	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.
	append(H,T,[H|T]).
	member(H,[H]).
	member(H,[H|_]).
	member(H,[_|T]):-member(H,T).
	wri([[A,B]]):-write(A,' ',B),nl.
	wri([[A,B]|T]):-wri(T),write(A,' ',B,' '),nl.
	pull(C,Y,T,_,_,C):-append([C,Y],T,T1),wri(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).
go:-A=4,B=3,C=2, 
		pull(0,0,[],A,B,C);write("fail").
	goal
go

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?