Price fraction: Difference between revisions
Content added Content deleted
(added ocaml) |
|||
Line 221: | Line 221: | ||
<lang j> priceFraction 0.34 0.070145 0.06 0.05 0.50214 0.56 1 0.99 0 |
<lang j> priceFraction 0.34 0.070145 0.06 0.05 0.50214 0.56 1 0.99 0 |
||
0.5 0.18 0.18 0.1 0.62 0.7 1 1 0.1</lang> |
0.5 0.18 0.18 0.1 0.62 0.7 1 1 0.1</lang> |
||
=={{header|OCaml}}== |
|||
<lang ocaml>let price_fraction v = |
|||
if v < 0.0 || v >= 1.01 then |
|||
invalid_arg "price_fraction"; |
|||
let rec aux = function |
|||
| (x,r)::tl -> |
|||
if v < x then r |
|||
else aux tl |
|||
| [] -> assert false |
|||
in |
|||
aux [ |
|||
0.06, 0.10; 0.11, 0.18; 0.16, 0.26; 0.21, 0.32; 0.26, 0.38; |
|||
0.31, 0.44; 0.36, 0.50; 0.41, 0.54; 0.46, 0.58; 0.51, 0.62; |
|||
0.56, 0.66; 0.61, 0.70; 0.66, 0.74; 0.71, 0.78; 0.76, 0.82; |
|||
0.81, 0.86; 0.86, 0.90; 0.91, 0.94; 0.96, 0.98; 1.01, 1.00; |
|||
]</lang> |
|||
<lang ocaml>let () = |
|||
let ok_tests = [ |
|||
(0.3793, 0.54); |
|||
(0.4425, 0.58); |
|||
(0.0746, 0.18); |
|||
(0.6918, 0.78); |
|||
(0.2993, 0.44); |
|||
(0.5486, 0.66); |
|||
(0.7848, 0.86); |
|||
(0.9383, 0.98); |
|||
(0.2292, 0.38); |
|||
] in |
|||
Printf.printf " input res ok\n"; |
|||
List.iter (fun (v,ok) -> |
|||
let r = price_fraction v in |
|||
Printf.printf " %6g %g %b\n" v r (r = ok); |
|||
) ok_tests; |
|||
;;</lang> |
|||
=={{header|Oz}}== |
=={{header|Oz}}== |
||
Line 240: | Line 279: | ||
end |
end |
||
end</lang> |
end</lang> |
||
=={{header|PL/I}}== |
=={{header|PL/I}}== |