Фон
Ліндон слово не є символом нового рядка , яка є строго словниковий менше , ніж усіма іншими його обертання. Будь-який рядок можна однозначно визначити як конкатенація ліндонських слів так, що ці підслови лексикографічно не збільшуються; Ваше завдання - зробити це якомога коротше.
Деталі
Ви повинні реалізувати функцію або програму, яка перераховує ліндографічну факторизацію будь-якої друкованої рядка ASCII для того, щоб виводити результуючі підрядки як масив чи потік якогось типу. Символи слід порівнювати за кодовими точками, а всі стандартні методи введення та виводу дозволені. Як зазвичай для коду-гольфу , виграє найкоротша програма в байтах.
Випробування
'' []
'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 No. 'abac' - слово Ліндона.
—
user1502040
@ user1502040 Я бачу, зв’язки цікаві. Я б запропонував додати кілька тестових випадків, які сприймають це.
—
xnor