36 lines
704 B
Prolog
36 lines
704 B
Prolog
:- use_module(library(clpfd)).
|
|
|
|
circle :-
|
|
bagof([X,Y], init(X,Y), BL),
|
|
length(BL, N),
|
|
length(L, 100),
|
|
maplist(choose(BL, N), L),
|
|
draw_circle(L).
|
|
|
|
|
|
% point selection
|
|
choose(BL, N, V) :-
|
|
I is random(N),
|
|
nth0(I, BL, V).
|
|
|
|
% to find all couples of numbers verifying
|
|
% 100 <= x^2 + y^2 <= 225
|
|
init(X1, Y1) :-
|
|
X in -15..15,
|
|
Y in -15..15,
|
|
X*X + Y*Y #>= 100,
|
|
X*X + Y*Y #=< 225,
|
|
label([X,Y]),
|
|
X1 is 10 * X + 200,
|
|
Y1 is 10 * Y + 200.
|
|
|
|
|
|
draw_circle(L) :-
|
|
new(D, window('Circle')),
|
|
send(D, size,size(400,400)),
|
|
forall(member([X,Y], L),
|
|
( new(C, circle(4)),
|
|
send(C, fill_pattern, colour(@default, 0, 0, 0)),
|
|
send(C, center(point(X,Y))),
|
|
send(D, display, C))),
|
|
send(D, open).
|