バックグラウンド
A リンドン・ワードは、そのすべての他の回転より厳密に辞書的に小さい非空の文字列です。これらのサブワードが辞書式に増加しないように、Lyndonワードの連結として任意のストリングを一意に因数分解することができます。あなたの挑戦はこれをできるだけ簡潔にすることです。
詳細
印刷可能なASCII文字列のLyndonワード分解を順番に列挙する関数またはプログラムを実装し、結果の部分文字列を何らかの配列またはストリームとして出力する必要があります。文字はコードポイントで比較する必要があり、すべての標準入出力メソッドが許可されます。code-golfの場合と同様に、バイト単位の最短プログラムが優先されます。
テストケース
'' []
'C' ['C']
'aaaaa' ['a', 'a', 'a', 'a', 'a']
'K| ' ['K|', ' ']
'abaca' ['abac', 'a']
'9_-$' ['9_', '-', '$']
'P&O(;' ['P', '&O(;']
'xhya{Wd$' ['x', 'hy', 'a{', 'Wd', '$']
'j`M?LO!!Y' ['j', '`', 'M', '?LO', '!!Y']
'!9!TZ' ['!9!TZ']
'vMMe' ['v', 'MMe']
'b5A9A9<5{0' ['b', '5A9A9<5{', '0']
関連
—
xnor
これは、
—
CalculatorFeline
<=
ness による分割と同等であることに注意してください。(私はこれをより良く表現する方法がわかりません:|)
これは、最初の文字とそれよりも大きいすべての文字のプレフィックスを繰り返し取得することと同等ですか?
—
-xnor
@xnorいいえ。「abac」はリンドン語です。
—
user1502040
@ user1502040なるほど、関係は興味深いです。これをキャッチするテストケースを追加することをお勧めします。
—
xnor