Розглянемо наступний алфавітно відсортований список слів:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
Усі слова починаються з b, а перші 5 починаються з bal. Якщо ми просто подивимось на перші 2 слова:
balderdash
ballet
ми могли б замість цього написати:
balderdash
+let
де ' 'використовується, коли слово поділяє символ префікса з попереднім словом; за винятком '+'символу, який позначає ОСТАННІЙ символ, де друге слово розділяє префікс з попереднім словом.
Це своєрідна візуалізація «трійки» : батьків є ' bal', і має 2 нащадки: 'derdash'і 'let'.
З більш довгим списком, наприклад:
balderdash
ballet
brooding
ми можемо додатково використати символ труби, '|'щоб зрозуміти, де закінчується спільний префікс:
balderdash
| +let
+rooding
і еквівалентну дерево матиме корінь , 'b'який має двох дітей: в поддереве , що має корінь 'al'і та її двоє дітей , 'derdash'і 'let'; і 'rooding'.
Якщо ми застосуємо цю стратегію до нашого початкового списку,
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
ми отримуємо вихід, який виглядає так:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
Якщо два послідовних слова у списку не мають спільного префіксу, не замінюються спеціальні символи; наприклад для списку:
broom
brood
crude
crumb
ми хочемо вихід:
broom
+d
crude
+mb
Вхідні дані
Слова у введенні будуть складатися лише з буквено-цифрових знаків (без пробілів і пунктуації); це може бути у вигляді списку рядків, окремої рядки або будь-якого іншого розумного підходу, якщо ви вкажете вибраний формат. Жодні два слова поспіль не будуть однаковими. Список буде відсортований за алфавітом.
Вихід
Ваш вихід може містити пробіли пробілів на рядок або загалом, але немає провідного пробілу. Перелік рядків або подібних також буде прийнятним.
Це код-гольф ; найкоротший код на кожній мові зберігає права на хвастощі. Діють звичайні заборони проти лазівки.
Випробування
Input:
apogee
apology
app
apple
applique
apply
apt
Output:
apogee
|+logy
+p
|+le
| +ique
| +y
+t
Input:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
donald
donatella
donna
dont
dumb
Output:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
donald
| |+tella
| +na
| +t
+umb
+перше o, але я не написав виклик, тому я не впевнений.
ballпісляballoon. Якого результату слід очікувати?