Voici comment revenir en arrière et retaper d'une chaîne à une autre:
- Commencez à la première chaîne.
- Supprimez les caractères à la fin jusqu'à ce que le résultat soit un préfixe de la deuxième chaîne. (Cela peut prendre 0 étapes.)
- Ajoutez des caractères à la fin jusqu'à ce que le résultat soit égal à la deuxième chaîne. (Cela peut prendre 0 étapes, aussi.)
Par exemple, le chemin de fooabc
à fooxyz
ressemble à:
fooabc
fooab
fooa
foo
foox
fooxy
fooxyz
Tâche
À partir d'une liste de mots, écrivez un programme qui recule et recoupe son chemin de la chaîne vide à tous les mots successivement de la liste, puis revient à la chaîne vide. Affiche toutes les chaînes intermédiaires.
Par exemple, étant donné la liste des entrées ["abc", "abd", "aefg", "h"]
, le résultat devrait être:
a
ab
abc
ab
abd
ab
a
ae
aef
aefg
aef
ae
a
h
Règles
Vous pouvez renvoyer ou imprimer une liste de chaînes ou une seule chaîne avec un délimiteur de choix. Vous pouvez éventuellement inclure les chaînes vides initiale et finale. Il est garanti que l’entrée contient au moins un mot et que chaque mot ne contient que des lettres ASCII minuscules ( a
- z
). Modifier: les chaînes consécutives dans l'entrée sont garanties ne pas être égales.
C'est du code-golf ; le code le plus court en octets gagne.
Une implémentation de référence dans Python 3: essayez-le en ligne!
["abc","abc"]
?
a,abc,abcde,abc,a,abc,abcde