Hintergrund
Ein Lyndon-Wort ist eine nicht leere Zeichenfolge, die streng lexikografisch kleiner ist als alle anderen Rotationen. Es ist möglich, jede Zeichenfolge als Verkettung von Lyndon-Wörtern eindeutig zu faktorisieren, sodass diese Unterwörter lexikografisch nicht ansteigen. Ihre Herausforderung besteht darin, dies so kurz wie möglich zu halten.
Einzelheiten
Sie sollten eine Funktion oder ein Programm implementieren, das die Lyndon-Wortfaktorisierung einer druckbaren ASCII-Zeichenfolge auflistet, um die resultierenden Teilzeichenfolgen als Array oder Stream auszugeben. Zeichen sollten anhand ihrer Codepunkte verglichen werden, und alle Standardeingabe- und -ausgabemethoden sind zulässig. Wie beim Code-Golf üblich , gewinnt das kürzeste Programm in Bytes.
Testfälle
'' []
'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']
code-golf
string
combinatorics
user1502040
quelle
quelle
<=
Ness entspricht. (Ich habe keine Ahnung, wie ich das besser ausdrücken kann: |)Antworten:
Pyth,
1716 Bytes-1 Byte dank isaacg!
Probieren Sie es online aus!
Erläuterung
quelle
hf!ff>Y>YZUYT+./
berücksichtigt den leeren Zeichenfolgenfall mit 1 Byte weniger.Gelee , 18 Bytes
Probieren Sie es online aus!
quelle
Pyth - 28 Bytes
Testsuite .
quelle