Rozważ następującą alfabetycznie posortowaną listę słów:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
Wszystkie słowa zaczynają się od b
, a pierwszych 5 zaczyna się od bal
. Jeśli spojrzymy tylko na pierwsze 2 słowa:
balderdash
ballet
zamiast tego moglibyśmy napisać:
balderdash
+let
gdzie ' '
jest używane, gdy słowo dzieli znak przedrostka z poprzednim słowem; z wyjątkiem '+'
znaku wskazującego OSTATNI znak, w którym drugie słowo ma przedrostek z poprzednim słowem.
Jest to rodzaj wizji „trie” : rodzic ma „ bal
” i ma 2 potomków: 'derdash'
i 'let'
.
Z dłuższą listą, taką jak:
balderdash
ballet
brooding
możemy dodatkowo użyć znaku potoku, '|'
aby wyjaśnić, gdzie kończy się wspólny prefiks, w następujący sposób:
balderdash
| +let
+rooding
a równoważne drzewo miałoby korzeń 'b'
posiadania dwojga dzieci: poddrzewo mające korzeń 'al'
i jego dwoje dzieci 'derdash'
oraz 'let'
; a 'rooding'
.
Jeśli zastosujemy tę strategię do naszej oryginalnej listy,
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
otrzymujemy wynik, który wygląda następująco:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
Jeśli dwa kolejne słowa na liście nie mają wspólnego prefiksu, znaki specjalne nie są zastępowane; np. dla listy:
broom
brood
crude
crumb
chcemy wynik:
broom
+d
crude
+mb
Wkład
Słowa na wejściu będą się składać wyłącznie z znaków alfanumerycznych (bez spacji i interpunkcji); może to mieć postać listy ciągów, pojedynczego ciągu lub innego rozsądnego podejścia, o ile podasz wybrany format. Żadne dwa kolejne słowa nie będą takie same. Lista zostanie posortowana alfabetycznie.
Wydajność
Dane wyjściowe mogą zawierać końcowe białe znaki na linię lub łącznie, ale nie mogą zawierać wiodących białych znaków. Dopuszczalna byłaby również lista ciągów lub temu podobnych.
To jest golf golfowy ; najkrótszy kod w każdym języku zachowuje prawo do chwalenia się. Obowiązują zwykłe zakazy dotyczące luk.
Przypadki testowe
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
+
mniej niż pierwsze o
, ale nie napisałem wyzwania, więc nie jestem pewien.
ball
poballoon
. Jakiej produkcji powinniśmy się spodziewać?