Generate an n-bit Gray code sequence using the standard i ^ (i >> 1) method.
Returns a Vec of length 2^n, where each element is the Gray code for i in [0 .. 2^n).
A self-contained, demonstrative (but general) Schur–Zassenhaus (Zassenhaus) algorithm in Rust.
This example works with finite groups given as subgroups of the symmetric group S_n (i.e., as
sets of permutations over {0..n-1}). It shows how to: