Skip to content

Commit c647577

Browse files
authored
Update gray_code.cpp
Remove extra lines, add bit_manipulation and gray_code namespaces, add negative number test
1 parent bc81f11 commit c647577

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

bit_manipulation/gray_code.cpp

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,24 @@
1515
#include <vector> /// for vector data structure
1616

1717
/**
18+
* @namespace bit_manipulation
19+
* @brief Bit manipulation algorithms
20+
*/
21+
namespace bit_manipulation {
22+
/**
23+
* @namespace gray_code
1824
* @brief Generate n-bit Gray code
25+
*/
26+
namespace gray_code {
27+
/**
28+
* @brief The main function to generate n-bit Gray code
1929
*
2030
* @param n Number of bits
2131
* @return A vector that stores the n-bit Gray code
2232
*/
23-
2433
std::vector<std::bitset<32>> gray_code_generation(int n) {
2534
std::vector<std::bitset<32>> gray_code = {}; // Initialise empty vector
26-
35+
2736
// No Gray codes for non-positive values of n
2837
if (n <= 0) {
2938
return gray_code;
@@ -37,15 +46,18 @@ std::vector<std::bitset<32>> gray_code_generation(int n) {
3746
}
3847

3948
return gray_code;
40-
}
49+
}
50+
} // namespace gray_code
51+
} // namespace bit_manipulation
4152

4253
/**
4354
* @brief Self-test implementation
4455
*
4556
* @returns void
4657
*/
47-
4858
static void test() {
59+
std::vector<std::bitset<32>> gray_code_negative_1 = {};
60+
4961
std::vector<std::bitset<32>> gray_code_0 = {};
5062

5163
std::vector<std::bitset<32>> gray_code_1 = {
@@ -79,12 +91,16 @@ static void test() {
7991
std::bitset<32>(18), std::bitset<32>(19), std::bitset<32>(17), std::bitset<32>(16)
8092
};
8193

82-
assert(gray_code_generation(0) == gray_code_0);
83-
assert(gray_code_generation(1) == gray_code_1);
84-
assert(gray_code_generation(2) == gray_code_2);
85-
assert(gray_code_generation(3) == gray_code_3);
86-
assert(gray_code_generation(4) == gray_code_4);
87-
assert(gray_code_generation(5) == gray_code_5);
94+
// invalid values for n
95+
assert(bit_manipulation::gray_code::gray_code_generation(-1) == gray_code_negative_1);
96+
assert(bit_manipulation::gray_code::gray_code_generation(0) == gray_code_0);
97+
98+
// valid values for n
99+
assert(bit_manipulation::gray_code::gray_code_generation(1) == gray_code_1);
100+
assert(bit_manipulation::gray_code::gray_code_generation(2) == gray_code_2);
101+
assert(bit_manipulation::gray_code::gray_code_generation(3) == gray_code_3);
102+
assert(bit_manipulation::gray_code::gray_code_generation(4) == gray_code_4);
103+
assert(bit_manipulation::gray_code::gray_code_generation(5) == gray_code_5);
88104
}
89105

90106
/**

0 commit comments

Comments
 (0)