Skip to content

Commit ce070ff

Browse files
Update swap_odd_even_bits.rs
1 parent f7bd542 commit ce070ff

1 file changed

Lines changed: 15 additions & 45 deletions

File tree

src/bit_manipulation/swap_odd_even_bits.rs

Lines changed: 15 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/// # Examples
1515
///
1616
/// ```
17-
/// use rust_algorithms::bit_manipulation::swap_odd_even_bits;
17+
/// use the_algorithms_rust::bit_manipulation::swap_odd_even_bits;
1818
///
1919
/// assert_eq!(swap_odd_even_bits(0), 0);
2020
/// assert_eq!(swap_odd_even_bits(1), 2);
@@ -28,28 +28,14 @@
2828
pub fn swap_odd_even_bits(num: u32) -> u32 {
2929
// Get all even bits - 0xAAAAAAAA is a 32-bit number with all even bits set to 1
3030
let even_bits = num & 0xAAAAAAAA;
31-
31+
3232
// Get all odd bits - 0x55555555 is a 32-bit number with all odd bits set to 1
3333
let odd_bits = num & 0x55555555;
34-
34+
3535
// Right shift even bits and left shift odd bits and swap them
3636
(even_bits >> 1) | (odd_bits << 1)
3737
}
3838

39-
/// Formats binary representation of two numbers for display.
40-
///
41-
/// # Arguments
42-
///
43-
/// * `before` - The original number
44-
/// * `after` - The transformed number
45-
///
46-
/// # Returns
47-
///
48-
/// A formatted string showing both numbers in binary
49-
fn show_bits(before: u32, after: u32) -> String {
50-
format!("{:>5}: {:08b}\n{:>5}: {:08b}", before, before, after, after)
51-
}
52-
5339
#[cfg(test)]
5440
mod tests {
5541
use super::*;
@@ -64,39 +50,23 @@ mod tests {
6450
assert_eq!(swap_odd_even_bits(5), 10);
6551
assert_eq!(swap_odd_even_bits(6), 9);
6652
assert_eq!(swap_odd_even_bits(23), 43);
53+
assert_eq!(swap_odd_even_bits(24), 36);
6754
}
6855

6956
#[test]
70-
fn test_show_bits() {
71-
assert_eq!(
72-
show_bits(0, swap_odd_even_bits(0)),
73-
" 0: 00000000\n 0: 00000000"
74-
);
75-
assert_eq!(
76-
show_bits(1, swap_odd_even_bits(1)),
77-
" 1: 00000001\n 2: 00000010"
78-
);
79-
assert_eq!(
80-
show_bits(23, swap_odd_even_bits(23)),
81-
" 23: 00010111\n 43: 00101011"
82-
);
83-
}
57+
fn test_edge_cases() {
58+
// All bits set
59+
assert_eq!(swap_odd_even_bits(0xFFFFFFFF), 0xFFFFFFFF);
8460

85-
#[test]
86-
fn test_display_output() {
87-
let test_cases = vec![0, 1, 2, 3, 4, 23, 24];
88-
89-
for i in test_cases {
90-
let result = show_bits(i, swap_odd_even_bits(i));
91-
println!("{}\n", result);
92-
}
61+
// Alternating patterns
62+
assert_eq!(swap_odd_even_bits(0xAAAAAAAA), 0x55555555);
63+
assert_eq!(swap_odd_even_bits(0x55555555), 0xAAAAAAAA);
9364
}
94-
}
9565

96-
fn main() {
97-
println!("Swapping odd and even bits:\n");
98-
99-
for i in [0, 1, 2, 3, 4, 23, 24] {
100-
println!("{}\n", show_bits(i, swap_odd_even_bits(i)));
66+
#[test]
67+
fn test_power_of_two() {
68+
assert_eq!(swap_odd_even_bits(16), 32);
69+
assert_eq!(swap_odd_even_bits(32), 16);
70+
assert_eq!(swap_odd_even_bits(64), 128);
10171
}
10272
}

0 commit comments

Comments
 (0)