Anonymous user
Total circles area: Difference between revisions
Added Julia language
m (added a related link.) |
(Added Julia language) |
||
Line 1,436:
=={{header|Julia}}==
{{works with|Julia|0.6}}
Simple grid algorithm. Borrows the xmin/xmax idea from the Python version. This algorithm is fairly slow.
<lang julia># Total circles area: https://rosettacode.org/wiki/Total_circles_area
# v0.6
# Size of my grid -- higher values => higher accuracy.▼
xc = [1.6417233788, -1.4944608174
-0.1985249206, -1.7011985145, -0.4319462812, 0.2178372997, -0.6294854565, 1.7952608455,
1.4168575317, 1.4637371396, -0.5263668798, -1.2197352481, -0.1389358881, 1.5293954595,
-0.5258728625, -0.1403562064, 0.8055826339, -0.6311979224, 1.4685857879, -0.6855727502,
r2 = r .* r;▼
0.0152957411]
yc = [1.6121789534, 1.2077959613, -0.6907087527, 0.2923344616, -0.3832854473, 1.6178237031,
-0.8343333301, -0.1263820964, 1.4104420482, -0.9499557344, -1.3078893852, 0.6281269104,
1.0683357171, 0.9463877418, 1.7315156631, 0.9144146579, 0.1092805780, 0.0030278255,
1.3782633069, 0.2437382535, -0.0482092025, 0.7184578971, -0.8347049536, 1.6465021616,
0.0638919221]
r = [0.0848270516, 1.1039549836, 0.9089162485, 0.2375743054, 1.0845181219, 0.8162655711,
0.0538864941, 0.4776976918, 0.7886291537, 0.0357871187, 0.7653357688, 0.2727652452,
1.1016025378, 1.1846214562, 1.4428514068, 1.0727263474, 0.7350208828, 1.2472867347,
1.3495508831, 1.3804956588, 0.3327165165, 0.2491045282, 1.3670667538, 1.0593087096,
0.9771215985]
▲# Size of my grid -- higher values => higher accuracy.
ncircles = length(xc);▼
function main(xc::Vector{<:Real}, yc::Vector{<:Real}, r::Vector{<:Real}, ngrid::Integer=10000)
# Compute the bounding box of the circles.▼
▲# Compute the bounding box of the circles.
# Keep a counter.▼
▲ymin = minimum(yc-r);
▲ymax = maximum(yc+r);
# For every point in my grid.▼
for x in linspace(xmin, xmax, ngrid), y = linspace(ymin, ymax, ngrid)▼
▲# Keep a counter.
▲inside = 0;
▲# For every point in my grid.
▲ for y = linspace(ymin,ymax,ngrid)
▲ if any(r2 .> (x - xc).^2 + (y - yc).^2)
end
end
println(@time main(xc, yc, r, 1000))</lang>
▲box_area = (xmax-xmin) * (ymax-ymin);
▲result = box_area * inside / ngrid^2;
=={{header|Kotlin}}==
|