リンドン・ワードは厳密である文字列で辞書順で小さいその環状の回転のいずれよりも。バイナリ文字列が与えられたら、それができるだけ少ないバイト数のリンドン語かどうかを判断します。
たとえば001011
、Lyndonの単語です。以下にリストされているその回転は、最初のシンボルを最後まで繰り返し移動することによって取得されます。
001011
010110
101100
011001
110010
100101
これらのうち、元の文字列は辞書的に最初に来るか、同等に、最小のバイナリ数を表します。
ただし、001001
Lyndonの単語ではありません。これは、その回転の1つがそれ自体と同じであるため、辞書的に最も早いものに結び付けられているためです。
入力:空でないバイナリ文字列または数字0
とのリスト1
。を表すために数字を使用することはできません。5
101
出力:文字列がリンドン語かどうかを示す一貫したTruthyまたはFalseyの値。
Lyndonの単語専用のビルトインは許可されていません。
テストケース:
最大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
リーダーボード:
x
等しい回転がないことをどのように確認しx
ますか?