circles.pl
来自「PRl教学程序 PRl教学程序 PRl教学程序」· PL 代码 · 共 53 行
PL
53 行
/********************************************************************
Constraint-based Graphical Programming in B-Prolog
%
draw fancy circles
*********************************************************************/
go:-
N=31,
functor(T,circles,N),
T=..[_|Circles],
createCircles(Circles),
%
cgSameCenterY(Circles),
constrainSize(T,1,N),
constrainColor(Circles),
%
cgStartRecord(circles),
cgShow(Circles),
cgStopRecord.
createCircles([]).
createCircles([C|Cs]):-
cgCircle(C),
createCircles(Cs).
constrainSize(T,N0,N):-
2*N0<N,!,
I is 2*N0,
J is 2*N0+1,
arg(N0,T,C0),
arg(I,T,C1),
arg(J,T,C2),
C0^diameter #= 2*C1^diameter,
C2^diameter #= C1^diameter,
C1^x #= C0^x, C2^x #= C0^centerX,
N1 is N0+1,
constrainSize(T,N1,N).
constrainSize(_T,_N0,_N).
%two circles that are of the same size must have the same color
%and two circles that are of different sizes must have different colors
constrainColor([]):-!.
constrainColor([_]):-!.
constrainColor([C|Cs]):-
constrainColor(C,Cs),
constrainColor(Cs).
constrainColor(_C,[]).
constrainColor(C,[C1|Cs]):-
C^color #\= black, C^color #\= darkGray, C^color #\= gray, C^color #\= blue,
(C^diameter #= C1^diameter) #=> C^color #= C1^color,
(C^diameter #\= C1^diameter) #=> C^color #\= C1^color,
constrainColor(C,Cs).
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?