린든 단어 분해 코드 골프

배경

린든 단어는 엄격하게 모든 다른 회전보다 사전 작은 비어 있지 않은 문자열입니다. Lyndon 단어의 연결로 문자열을 고유하게 고려하여 이러한 하위 단어가 사전 식으로 비 증가되도록 할 수 있습니다. 당신의 도전은 가능한 간결하게 이것을하는 것입니다.

세부

인쇄 가능한 ASCII 문자열의 Lyndon 단어 분해를 열거하는 함수 또는 프로그램을 순서대로 생성하여 결과 하위 문자열을 어떤 종류의 배열 또는 스트림으로 출력해야합니다. 문자는 코드 포인트로 비교해야하며 모든 표준 입력 및 출력 방법이 허용됩니다. 에 대한 평소처럼 바이트 승리의 짧은 프로그램입니다.

테스트 사례

''           []
'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']



답변

Pyth, 17 16 바이트

isaacg 덕분에 -1 바이트!

hf!ff>Y>YZUYT+./

온라인으로 사용해보십시오!

설명

hf!ff>Y>YZUYT+./
              ./    Take all possible disjoint substring sets of [the input]
             +      plus [the input] itself (for the null string case).
 f                  Filter for only those sets which
  !f        T       for none of the substrings
    f  >YZUY        is there a suffix of the substring
     >Y             lexographically smaller than the substring itself.
h                   Return the first (i.e. the shortest) such set of substrings.


답변

젤리 , 18 바이트

ṙJ¹ÐṂF⁼
ŒṖÇ€Ạ$ÐfṀȯ

온라인으로 사용해보십시오!


답변

Pyth-28 바이트

hf&SI_T.Am.A>Rdt.u.>N1tddT./

테스트 스위트 .


답변