Latar Belakang
Sebuah kata Lyndon adalah string non-kosong yang ketat leksikografi lebih kecil daripada semua rotasi lainnya. Dimungkinkan untuk memfaktorkan setiap string secara unik sebagai gabungan kata-kata Lyndon sedemikian rupa sehingga sub-kata ini secara leksikografis tidak meningkat; tantangan Anda adalah melakukan ini sejelas mungkin.
Detail
Anda harus mengimplementasikan fungsi atau program yang menyebutkan faktorisasi kata Lyndon dari string ASCII yang dapat dicetak, untuk menghasilkan substring yang dihasilkan sebagai array atau aliran dari beberapa jenis. Karakter harus dibandingkan dengan poin kode mereka, dan semua metode input dan output standar diperbolehkan. Seperti biasa untuk kode-golf , program terpendek dalam byte menang.
Uji Kasus
'' []
'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
pengguna1502040
sumber
sumber
<=
ness. (Saya tidak tahu bagaimana mengekspresikan ini dengan lebih baik: |)Jawaban:
Pyth,
1716 byte-1 byte terima kasih kepada isaacg!
Cobalah online!
Penjelasan
sumber
hf!ff>Y>YZUYT+./
menyumbang case string kosong dengan 1 byte lebih sedikit.Jelly , 18 byte
Cobalah online!
sumber
Pyth - 28 byte
Test Suite .
sumber