RosettaCodeData/Task/Binary-digits/OCaml/binary-digits.ml

12 lines
325 B
OCaml

let bin_of_int d =
let last_digit n = [|"0"; "1"|].(n land 1) in
let rec aux lst = function
| 0 -> lst
| n -> aux (last_digit n :: lst) (n lsr 1)
in
String.concat "" (aux [last_digit d] (d lsr 1))
(* test *)
let () = [0; 1; 2; 5; 50; 9000; -5]
|> List.map bin_of_int |> String.concat ", " |> print_endline