Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Gray-code/OCaml/gray-code.ocaml
Normal file
26
Task/Gray-code/OCaml/gray-code.ocaml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
let gray_encode b =
|
||||
b lxor (b lsr 1)
|
||||
|
||||
let gray_decode n =
|
||||
let rec aux p n =
|
||||
if n = 0 then p
|
||||
else aux (p lxor n) (n lsr 1)
|
||||
in
|
||||
aux n (n lsr 1)
|
||||
|
||||
let bool_string len n =
|
||||
let s = Bytes.make len '0' in
|
||||
let rec aux i n =
|
||||
if n land 1 = 1 then Bytes.set s i '1';
|
||||
if i <= 0 then (Bytes.to_string s)
|
||||
else aux (pred i) (n lsr 1)
|
||||
in
|
||||
aux (pred len) n
|
||||
|
||||
let () =
|
||||
let s = bool_string 5 in
|
||||
for i = 0 to pred 32 do
|
||||
let g = gray_encode i in
|
||||
let b = gray_decode g in
|
||||
Printf.printf "%2d : %s => %s => %s : %2d\n" i (s i) (s g) (s b) b
|
||||
done
|
||||
Loading…
Add table
Add a link
Reference in a new issue