Considérez la liste de mots triée alphabétiquement suivante:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
Tous les mots commencent par b
et les 5 premiers commencent par bal
. Si nous regardons simplement les 2 premiers mots:
balderdash
ballet
on pourrait plutôt écrire:
balderdash
+let
où le ' '
est utilisé lorsqu'un mot partage un préfixe avec le mot précédent; sauf pour le '+'
caractère qui indique le DERNIER caractère où le deuxième mot partage un préfixe avec le mot précédent.
Il s'agit d'une sorte de visualisation «trie» : le parent est « bal
», et a 2 descendants: 'derdash'
et 'let'
.
Avec une liste plus longue, comme:
balderdash
ballet
brooding
nous pouvons en outre utiliser le caractère pipe '|'
pour préciser où se termine le préfixe partagé, comme suit:
balderdash
| +let
+rooding
et l'arbre équivalent aurait une racine d' 'b'
avoir deux enfants: le sous-arbre ayant racine 'al'
et et ses deux enfants 'derdash'
et 'let'
; et 'rooding'
.
Si nous appliquons cette stratégie à notre liste d'origine,
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
nous obtenons une sortie qui ressemble à:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
Si deux mots consécutifs de la liste n'ont pas de préfixe partagé, aucun caractère spécial n'est substitué; par exemple pour la liste:
broom
brood
crude
crumb
nous voulons la sortie:
broom
+d
crude
+mb
Contribution
Les mots dans l'entrée ne seront composés que de caractères alphanumériques (pas d'espaces ni de ponctuation); cela peut prendre la forme d'une liste de chaînes, d'une seule chaîne ou de toute autre approche raisonnable, tant que vous spécifiez le format choisi. Deux mots consécutifs ne seront pas identiques. La liste sera triée par ordre alphabétique.
Sortie
Votre sortie peut contenir des espaces de fin par ligne ou au total, mais aucun espace de début. Une liste de chaînes ou similaires serait également acceptable.
C'est du code-golf ; le code le plus court dans chaque langue conserve des droits de vantardise. Les interdictions habituelles contre les échappatoires s'appliquent.
Cas de 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
+
sous le premier o
, mais je n'ai pas écrit le défi donc je ne suis pas certain.
ball
aprèsballoon
. À quelle sortie devrions-nous nous attendre?