Total circles area: Difference between revisions

m
→‎{{header|Phix}}: syntax coloured
(Added XPL0 example.)
m (→‎{{header|Phix}}: syntax coloured)
Line 2,027:
=={{header|Phix}}==
{{trans|Python}}
<!--<lang Phix>(phixonline)-->
<lang Phix>constant circles = {{ 1.6417233788, 1.6121789534, 0.0848270516},
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
{-1.4944608174, 1.2077959613, 1.1039549836},
<span style="color: #008080;">constant</span> <span style="color: #000000;">circles</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span> <span style="color: #000000;">1.6417233788</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.6121789534</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.0848270516</span><span style="color: #0000FF;">},</span>
{ 0.6110294452, -0.6907087527, 0.9089162485},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">1.4944608174</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.2077959613</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.1039549836</span><span style="color: #0000FF;">},</span>
{ 0.3844862411, 0.2923344616, 0.2375743054},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">0.6110294452</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">0.6907087527</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.9089162485</span><span style="color: #0000FF;">},</span>
{-0.2495892950, -0.3832854473, 1.0845181219},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">0.3844862411</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.2923344616</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.2375743054</span><span style="color: #0000FF;">},</span>
{ 1.7813504266, 1.6178237031, 0.8162655711},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.2495892950</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">0.3832854473</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.0845181219</span><span style="color: #0000FF;">},</span>
{-0.1985249206, -0.8343333301, 0.0538864941},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">1.7813504266</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.6178237031</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.8162655711</span><span style="color: #0000FF;">},</span>
{-1.7011985145, -0.1263820964, 0.4776976918},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.1985249206</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">0.8343333301</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.0538864941</span><span style="color: #0000FF;">},</span>
{-0.4319462812, 1.4104420482, 0.7886291537},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">1.7011985145</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">0.1263820964</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.4776976918</span><span style="color: #0000FF;">},</span>
{ 0.2178372997, -0.9499557344, 0.0357871187},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.4319462812</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.4104420482</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.7886291537</span><span style="color: #0000FF;">},</span>
{-0.6294854565, -1.3078893852, 0.7653357688},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">0.2178372997</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">0.9499557344</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.0357871187</span><span style="color: #0000FF;">},</span>
{ 1.7952608455, 0.6281269104, 0.2727652452},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.6294854565</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1.3078893852</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.7653357688</span><span style="color: #0000FF;">},</span>
{ 1.4168575317, 1.0683357171, 1.1016025378},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">1.7952608455</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.6281269104</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.2727652452</span><span style="color: #0000FF;">},</span>
{ 1.4637371396, 0.9463877418, 1.1846214562},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">1.4168575317</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.0683357171</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.1016025378</span><span style="color: #0000FF;">},</span>
{-0.5263668798, 1.7315156631, 1.4428514068},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">1.4637371396</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.9463877418</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.1846214562</span><span style="color: #0000FF;">},</span>
{-1.2197352481, 0.9144146579, 1.0727263474},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.5263668798</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.7315156631</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.4428514068</span><span style="color: #0000FF;">},</span>
{-0.1389358881, 0.1092805780, 0.7350208828},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">1.2197352481</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.9144146579</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.0727263474</span><span style="color: #0000FF;">},</span>
{ 1.5293954595, 0.0030278255, 1.2472867347},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.1389358881</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.1092805780</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.7350208828</span><span style="color: #0000FF;">},</span>
{-0.5258728625, 1.3782633069, 1.3495508831},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">1.5293954595</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.0030278255</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.2472867347</span><span style="color: #0000FF;">},</span>
{-0.1403562064, 0.2437382535, 1.3804956588},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.5258728625</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.3782633069</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.3495508831</span><span style="color: #0000FF;">},</span>
{ 0.8055826339, -0.0482092025, 0.3327165165},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.1403562064</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.2437382535</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.3804956588</span><span style="color: #0000FF;">},</span>
{-0.6311979224, 0.7184578971, 0.2491045282},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">0.8055826339</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">0.0482092025</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.3327165165</span><span style="color: #0000FF;">},</span>
{ 1.4685857879, -0.8347049536, 1.3670667538},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.6311979224</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.7184578971</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.2491045282</span><span style="color: #0000FF;">},</span>
{-0.6855727502, 1.6465021616, 1.0593087096},
<span style="color: #0000FF;">{</span> <span style="color: #000000;">1.4685857879</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">0.8347049536</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.3670667538</span><span style="color: #0000FF;">},</span>
{ 0.0152957411, 0.0638919221, 0.9771215985}},
<span style="color: #0000FF;">{-</span><span style="color: #000000;">0.6855727502</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.6465021616</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1.0593087096</span><span style="color: #0000FF;">},</span>
{x,y,r} = columnize(circles),
<span style="color: #0000FF;">{</span> <span style="color: #000000;">0.0152957411</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.0638919221</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0.9771215985</span><span style="color: #0000FF;">}},</span>
r2 = sq_power(r,2)
<span style="color: #0000FF;">{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">y</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">columnize</span><span style="color: #0000FF;">(</span><span style="color: #000000;">circles</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">r2</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sq_power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">r</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
atom xMin = min(sq_sub(x,r)),
xMax = max(sq_add(x,r)),
<span style="color: #004080;">atom</span> <span style="color: #000000;">xMin</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">min</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_sub</span><span style="color: #0000FF;">(</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">)),</span>
yMin = min(sq_sub(y,r)),
<span style="color: #000000;">xMax</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">max</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_add</span><span style="color: #0000FF;">(</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">)),</span>
yMax = max(sq_add(y,r)),
<span style="color: #000000;">yMin</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">min</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_sub</span><span style="color: #0000FF;">(</span><span style="color: #000000;">y</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">)),</span>
boxSide = 500,
<span style="color: #000000;">yMax</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">max</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_add</span><span style="color: #0000FF;">(</span><span style="color: #000000;">y</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">)),</span>
dx = (xMax - xMin) / boxSide,
<span style="color: #000000;">boxSide</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">500</span><span style="color: #0000FF;">,</span>
dy = (yMax - yMin) / boxSide,
<span style="color: #000000;">dx</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">xMax</span> <span style="color: #0000FF;">-</span> <span style="color: #000000;">xMin</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">/</span> <span style="color: #000000;">boxSide</span><span style="color: #0000FF;">,</span>
count = 0
<span style="color: #000000;">dy</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">yMax</span> <span style="color: #0000FF;">-</span> <span style="color: #000000;">yMin</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">/</span> <span style="color: #000000;">boxSide</span><span style="color: #0000FF;">,</span>
sequence cxs = {}
<span style="color: #000000;">count</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
for s=1 to boxSide do
<span style="color: #004080;">sequence</span> <span style="color: #000000;">cxs</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
atom py = yMin + s * dy
<span style="color: #008080;">for</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">boxSide</span> <span style="color: #008080;">do</span>
sequence cy = sq_power(sq_sub(py,y),2)
<span style="color: #004080;">atom</span> <span style="color: #000000;">py</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">yMin</span> <span style="color: #0000FF;">+</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">dy</span>
for c=1 to boxSide do
<span style="color: #004080;">sequence</span> <span style="color: #000000;">cy</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sq_power</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_sub</span><span style="color: #0000FF;">(</span><span style="color: #000000;">py</span><span style="color: #0000FF;">,</span><span style="color: #000000;">y</span><span style="color: #0000FF;">),</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
if s=1 then
<span style="color: #008080;">for</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">boxSide</span> <span style="color: #008080;">do</span>
atom px = xMin + c * dx
<span style="color: #008080;">if</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
cxs = append(cxs,sq_power(sq_sub(px,x),2))
<span style="color: #004080;">atom</span> <span style="color: #000000;">px</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">xMin</span> <span style="color: #0000FF;">+</span> <span style="color: #000000;">c</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">dx</span>
end if
<span style="color: #000000;">cxs</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">cxs</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sq_power</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_sub</span><span style="color: #0000FF;">(</span><span style="color: #000000;">px</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span><span style="color: #000000;">2</span><span style="color: #0000FF;">))</span>
sequence cx = cxs[c]
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
for i=1 to length(circles) do
<span style="color: #004080;">sequence</span> <span style="color: #000000;">cx</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">cxs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">c</span><span style="color: #0000FF;">]</span>
if cx[i]+cy[i]<=r2[i] then count+=1 exit end if
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">circles</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
end for
<span style="color: #008080;">if</span> <span style="color: #000000;">cx</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]+</span><span style="color: #000000;">cy</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]<=</span><span style="color: #000000;">r2</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #008080;">then</span> <span style="color: #000000;">count</span><span style="color: #0000FF;">+=</span><span style="color: #000000;">1</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end for
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
end for
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
printf(1,"Approximate area = %.9f\n",{count * dx * dy})</lang>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Approximate area = %.9f\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">count</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">dx</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">dy</span><span style="color: #0000FF;">})</span>
<!--</lang>-->
{{out}}
<pre>
7,805

edits