51 std::bitset<N> bits(val);
52 return bits.to_string();
58 std::cout <<
"\n=== Gray Code Utilities Demonstration ===\n\n";
61 std::cout <<
"Scenario A: Binary to Gray and back\n";
63 std::cout << std::left << std::setw(10) <<
"Decimal"
64 << std::setw(12) <<
"Binary"
65 << std::setw(12) <<
"Gray"
66 <<
"Recovered Binary\n";
74 std::cout << std::left << std::setw(10) << i
77 <<
to_bin<4>(b) << (i == b ?
" [OK]" :
" [ERR]") <<
"\n";
84 std::cout <<
"Scenario B: n-bit Gray code sequence generation\n";
89 std::cout <<
"Generated " << n <<
"-bit Gray code sequence:\n";
90 for (
size_t i = 0; i <
sequence.size(); ++i)
92 std::cout <<
" Step " << std::setw(2) << i <<
": "
97 std::cout <<
" (diff bit: " << std::popcount(
diff) <<
")";
104 std::cout <<
" Cyclic difference bit count: " << std::popcount(
cyclic_diff) <<
"\n";
111 std::cout <<
"Scenario C: Large value conversion\n";
113 uint64_t val = 0xDEADBEEFCAFEBABELL;
117 std::cout <<
"Original : 0x" << std::hex << val <<
"\n";
118 std::cout <<
"Gray : 0x" << g <<
"\n";
119 std::cout <<
"Recovered: 0x" << b <<
"\n";
120 std::cout << std::dec;
122 std::cout <<
"Successfully converted and recovered 64-bit value.\n";
124 std::cout <<
"Error in 64-bit conversion.\n";
128 std::cout <<
"\nDone.\n";
Combinatorics utilities: permutations, combinations and matrix transposition.
Main namespace for Aleph-w library functions.
constexpr T gray_to_bin(T g) noexcept
Convert a Gray code number to its binary representation.
Divide_Conquer_DP_Result< Cost > divide_and_conquer_partition_dp(const size_t groups, const size_t n, Transition_Cost_Fn transition_cost, const Cost inf=dp_optimization_detail::default_inf< Cost >())
Optimize partition DP using divide-and-conquer optimization.
Array< uint32_t > build_gray_code(const size_t n)
Generate the sequence of n-bit Gray codes.
bool diff(const C1 &c1, const C2 &c2, Eq e=Eq())
Check if two containers differ.
void print_rule()
Prints a horizontal rule for example output separation.
constexpr T bin_to_gray(const T n) noexcept
Convert a binary number to its Gray code representation.