Price fraction: Difference between revisions
Content added Content deleted
(Added uBasic/4tH version) |
m (→{{header|Phix}}: syntax coloured) |
||
Line 3,216: | Line 3,216: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
<lang Phix> |
<!--<lang Phix>(phixonline)--> |
||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span> |
|||
⚫ | |||
<span style="color: #008080;">constant</span> <span style="color: #000000;">TBL</span><span style="color: #0000FF;">=</span><span style="color: #7060A8;">split</span><span style="color: #0000FF;">(</span><span style="color: #008000;">""" |
|||
>= 0.06 < 0.11 := 0.18 |
|||
>= 0.00 < 0.06 := 0.10 |
|||
>= 0.06 < 0.11 := 0.18 |
|||
>= 0.11 < 0.16 := 0.26 |
|||
>= 0.16 < 0.21 := 0.32 |
|||
>= 0.21 < 0.26 := 0.38 |
|||
>= 0.26 < 0.31 := 0.44 |
|||
>= 0.31 < 0.36 := 0.50 |
|||
>= 0.36 < 0.41 := 0.54 |
|||
>= 0.41 < 0.46 := 0.58 |
|||
>= 0.46 < 0.51 := 0.62 |
|||
>= 0.51 < 0.56 := 0.66 |
|||
>= 0.56 < 0.61 := 0.70 |
|||
>= 0.61 < 0.66 := 0.74 |
|||
>= 0.66 < 0.71 := 0.78 |
|||
>= 0.71 < 0.76 := 0.82 |
|||
>= 0.76 < 0.81 := 0.86 |
|||
>= 0.81 < 0.86 := 0.90 |
|||
>= 0.86 < 0.91 := 0.94 |
|||
⚫ | |||
>= 0.96 < 1.01 := 1.00"""</span><span style="color: #0000FF;">,</span><span style="color: #008000;">'\n'</span><span style="color: #0000FF;">)</span> |
|||
sequence limits = {0}, |
|||
prices = {-1} |
|||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">limits</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">0</span><span style="color: #0000FF;">},</span> |
|||
atom lt,price |
|||
<span style="color: #000000;">prices</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">}</span> |
|||
for i=1 to length(TBL) do |
|||
<span style="color: #004080;">atom</span> <span style="color: #000000;">pl</span><span style="color: #0000FF;">,</span><span style="color: #000000;">lt</span><span style="color: #0000FF;">,</span><span style="color: #000000;">plt</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">price</span> |
|||
{{?,lt,price}} = scanf(TBL[i],">= %.2f < %.2f := %.2f") |
|||
<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;">TBL</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span> |
|||
limits = append(limits,lt) |
|||
<span style="color: #0000FF;">{</span><span style="color: #000000;">pl</span><span style="color: #0000FF;">,</span><span style="color: #000000;">lt</span><span style="color: #0000FF;">,</span><span style="color: #000000;">price</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">scanf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">TBL</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span><span style="color: #008000;">">= %.2f < %.2f := %.2f"</span><span style="color: #0000FF;">)[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> |
|||
prices = append(prices,price) |
|||
<span style="color: #7060A8;">assert</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pl</span><span style="color: #0000FF;">==</span><span style="color: #000000;">plt</span><span style="color: #0000FF;">)</span> |
|||
end for |
|||
<span style="color: #000000;">plt</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">lt</span> |
|||
<span style="color: #000000;">limits</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">limits</span><span style="color: #0000FF;">,</span><span style="color: #000000;">lt</span><span style="color: #0000FF;">)</span> |
|||
function price_fix(atom p) |
|||
<span style="color: #000000;">prices</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">prices</span><span style="color: #0000FF;">,</span><span style="color: #000000;">price</span><span style="color: #0000FF;">)</span> |
|||
for i=1 to length(limits) do |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
if p<limits[i] then |
|||
return prices[i] |
|||
<span style="color: #008080;">function</span> <span style="color: #000000;">price_fix</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span> <span style="color: #000000;">p</span><span style="color: #0000FF;">)</span> |
|||
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;">limits</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span> |
|||
end for |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">p</span><span style="color: #0000FF;"><</span><span style="color: #000000;">limits</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #008080;">then</span> |
|||
return -1 |
|||
<span style="color: #008080;">return</span> <span style="color: #000000;">prices</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> |
|||
end function |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
for i=-1 to 101 do |
|||
<span style="color: #008080;">return</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> |
|||
printf(1, "%5.2f %5.2f\n", {i/100,price_fix(i/100)}) |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
|||
⚫ | |||
<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: #000000;">101</span> <span style="color: #008080;">do</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;">"%5.2f %5.2f\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">i</span><span style="color: #0000FF;">/</span><span style="color: #000000;">100</span><span style="color: #0000FF;">,</span><span style="color: #000000;">price_fix</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">/</span><span style="color: #000000;">100</span><span style="color: #0000FF;">)})</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
⚫ | |||
=={{header|Phixmonti}}== |
=={{header|Phixmonti}}== |