# Lyndon word..?

It seems that the next step is generating Lyndon words. Lyndon words are the lexographically smallest rotation of a word. I haven’t yet found a proper way to do this (I know there are) so here is what I do:
Pseudo:
And here is what I used to generate the smallestLyndonRotation (Java):
How does it work? Well, for example the input is: 0010.
It loops over all rotations (using some bit-masking):
• 0010
• 0100
• 1000
• 0001
And finds the smallest lexographically (0001) and returns this.
The above pseudo code will spit out the following numbers:
• 0000
• 0001
• 0011
• 0101
• 0111
• 1111
These are all the Lyndon words for N=4.

# Splitting, reducing the Lyndon words

Now if we put the Lyndon words together we get:
• 000000010011010101111111 (our sequence)
• 0000100110101111 (de Bruijn sequence)
We aren’t quite there yet… but there is some resemblance. There is one more step left, we have to reduce/split the Lyndon words into its smallest unique part.
Lets take the Lyndon words again:
• 0000 -> 0 (4x)
• 0001 -> 0001
• 0011 -> 0011
• 0101 -> 01 (2x)
• 0111 -> 0111
• 1111 -> 1 (4x)
Results in: 0000100110101111, the sequence!
And that is it! If we’ve created the smallest possible de Bruijn sequence for B(2,4).
Here are some more sequences:
1. 01
2. 0011
3. 00010111
4. 0000100110101111
5. 00000100011001010011101011011111
6. 0000001000011000101000111001001011001101001111010101110110111111
7. 00000001000001100001010000111000100100010110001101000111100100110010101001011100110110011101001111101010110101111011011101111111
8. 00000000100000011000001010000011100001001000010110000110100001111000100010011000101010001011100011001000110110001110100011111001
00101001001110010101100101101001011110011001101010011011100111011001111010011111101010101110101101101011111011011110111011111111
9. 00000000010000000110000001010000001110000010010000010110000011010000011110000100010000100110000101010000101110000110010000110110
00011101000011111000100011000100101000100111000101001000101011000101101000101111000110011000110101000110111000111001000111011000111
10100011111100100100101100100110100100111100101001100101010100101011100101101100101110100101111100110011100110101100110110100110111
10011101010011101110011110110011111010011111110101010110101011110101101110101110110101111110110110111110111011110111111111