RosettaCodeData/Task/Gray-code/Rust/gray-code.rust

19 lines
341 B
Text
Raw Permalink Normal View History

2015-11-18 06:14:39 +00:00
fn gray_encode(integer: u64) -> u64 {
(integer >> 1) ^ integer
2014-04-02 16:56:35 +00:00
}
2015-11-18 06:14:39 +00:00
fn gray_decode(integer: u64) -> u64 {
match integer {
0 => 0,
_ => integer ^ gray_decode(integer >> 1)
}
2014-04-02 16:56:35 +00:00
}
fn main() {
2015-11-18 06:14:39 +00:00
for i in 0..32 {
println!("{:2} {:0>5b} {:0>5b} {:2}", i, i, gray_encode(i),
gray_decode(i));
}
2014-04-02 16:56:35 +00:00
}