Una parola Lyndon è una stringa che è strettamente lessicograficamente più piccola di una qualsiasi delle sue rotazioni cicliche. Data una stringa binaria, determinare se è una parola Lyndon nel minor numero di byte possibile.
Ad esempio, 001011è una parola di Lyndon. Le sue rotazioni, elencate di seguito, sono ottenute spostando ripetutamente il primo simbolo alla fine.
001011
010110
101100
011001
110010
100101
Di questi, la stringa originale viene prima lessicograficamente, o equivalentemente, rappresenta il numero binario più piccolo.
Tuttavia, 001001non è una parola Lyndon perché una delle sue rotazioni è la stessa di se stessa, che la lega per lessicograficamente prima.
Input: una stringa binaria non vuota o un elenco di cifre 0e 1. Si può non usare i numeri, come 5a rappresentare 101.
Output: un valore Truthy o Falsey coerente che indica se la stringa è una parola Lyndon.
Non sono ammessi built-in specifici per le parole di Lyndon.
Casi test:
Le parole di Lyndon con lunghezza fino a 6 sono:
0
1
01
001
011
0001
0011
0111
00001
00011
00101
00111
01011
01111
000001
000011
000101
000111
001011
001101
001111
010111
011111
Le parole non di Lyndon di lunghezza fino a 4 sono:
00
10
11
000
010
100
101
110
111
0000
0010
0100
0101
0110
1000
1001
1010
1011
1100
1101
1110
1111
Classifica:
xugualix?