Considera il seguente elenco di parole in ordine alfabetico:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
Tutte le parole iniziano con b
e le prime 5 iniziano con bal
. Se guardiamo solo le prime 2 parole:
balderdash
ballet
potremmo invece scrivere:
balderdash
+let
dove ' '
viene usato dove una parola condivide un prefisso con la parola precedente; ad eccezione del '+'
carattere che indica l'ULTIMO carattere in cui la seconda parola condivide un prefisso con la parola precedente.
Questa è una sorta di visualizzazione 'trie' : il genitore è ' bal
' e ha 2 discendenti: 'derdash'
e 'let'
.
Con un elenco più lungo, come ad esempio:
balderdash
ballet
brooding
possiamo inoltre utilizzare il carattere pipe '|'
per renderlo più chiaro dove finisce il prefisso condiviso, come segue:
balderdash
| +let
+rooding
e l'albero equivalente avrebbe una radice 'b'
con due figli: il sottoalbero ha radice 'al'
e con i suoi due figli 'derdash'
e 'let'
; e 'rooding'
.
Se applichiamo questa strategia al nostro elenco originale,
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
otteniamo un output simile a:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
Se due parole consecutive nell'elenco non hanno un prefisso condiviso, non vengono sostituiti caratteri speciali; ad es. per l'elenco:
broom
brood
crude
crumb
vogliamo l'output:
broom
+d
crude
+mb
Ingresso
Le parole nell'input saranno costituite solo da caratteri alfanumerici (senza spazi o punteggiatura); questo può essere sotto forma di un elenco di stringhe, una singola stringa o qualsiasi altro approccio ragionevole, purché si specifichi il formato scelto. Non ci saranno due parole consecutive uguali. L'elenco sarà in ordine alfabetico.
Produzione
L'output può contenere spazi bianchi finali per riga o in totale, ma nessuno spazio bianco iniziale. Un elenco di stringhe o simili sarebbe anche accettabile.
Questo è code-golf ; il codice più breve in ogni lingua conserva i diritti di vantarsi. Si applicano i consueti divieti contro le scappatoie.
Casi test
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
+
under nel primo o
, ma non ho scritto la sfida, quindi non ne sono certo.
ball
dopoballoon
. Quale output dovremmo aspettarci?