REM Darwin Machine CLS PRINT "DARWIN MACHINE by Livio Zucca" PRINT "Dots X1 Y1" REM Constants: N = 100 'dots/side PI = 3.14159265# R = 1 'circles radius L = SQR(PI) 'square side REM Initial conditions: X1 = L 'first circle center Y1 = L OLDFREE = N ^ 2 'nr. of uncovered dots REM Loop: DO OLDX1 = X1 OLDY1 = Y1 REM New values calculus: X1 = X1 * (1 + (-1) ^ INT(RND * 2) * RND ^ 5) Y1 = Y1 * (1 + (-1) ^ INT(RND * 2) * RND ^ 5) X2 = X1 - L Y2 = Y1 X3 = L - X1 Y3 = Y1 - L X4 = X3 + L Y4 = Y3 REM uncovered dots calculus: FREE = 0 FOR X = 0 TO L STEP L / N FOR Y = 0 TO L STEP L / N D1 = (X - X1) ^ 2 + (Y - Y1) ^ 2 D2 = (X - X2) ^ 2 + (Y - Y2) ^ 2 D3 = (X - X3) ^ 2 + (Y - Y3) ^ 2 D4 = (X - X4) ^ 2 + (Y - Y4) ^ 2 IF D1 > 1 AND D2 > 1 AND D3 > 1 AND D4 > 1 THEN FREE = FREE + 1 END IF NEXT Y NEXT X REM Decision: IF FREE >= OLDFREE THEN X1 = OLDX1 Y1 = OLDY1 ELSE OLDFREE = FREE PRINT OLDFREE; OLDX1; OLDY1 'output END IF LOOP