Линдон слово является строкой , которая является строго лексикографически меньше , чем любой из его циклических вращений. По заданной двоичной строке определите, является ли это слово Линдона как можно меньшим количеством байтов.
Например, 001011
это слово Линдона. Его повороты, перечисленные ниже, получены путем многократного перемещения первого символа в конец.
001011
010110
101100
011001
110010
100101
Из них исходная строка ставится лексикографически первой или, что то же самое, представляет наименьшее двоичное число.
Однако, 001001
это не слово Линдона, потому что одно из его вращений такое же, как и у него, что связывает его для лексикографически самого раннего.
Входные данные: непустая двоичная строка или список цифр 0
и 1
. Вы не можете использовать числа, как 5
для представления 101
.
Вывод: непротиворечивое значение Truthy или Falsey, которое указывает, является ли строка словом Линдона.
Встроенные модули специально для слов Линдона не допускаются.
Тестовые случаи:
Слова Линдона длиной до 6:
0
1
01
001
011
0001
0011
0111
00001
00011
00101
00111
01011
01111
000001
000011
000101
000111
001011
001101
001111
010111
011111
НеЛиндоновские слова длиной до 4:
00
10
11
000
010
100
101
110
111
0000
0010
0100
0101
0110
1000
1001
1010
1011
1100
1101
1110
1111
Leaderboard:
x
, которые равныx
?