Veja como retroceder e digitar novamente de uma sequência para outra:
- Comece da primeira string.
- Remova os caracteres no final até o resultado ser um prefixo da segunda sequência. (Isso pode levar 0 etapas.)
- Adicione caracteres no final até que o resultado seja igual à segunda string. (Isso também pode levar 0 etapas.)
Por exemplo, o caminho de fooabc
para se fooxyz
parece com:
fooabc
fooab
fooa
foo
foox
fooxy
fooxyz
Tarefa
Dada uma lista de palavras, escreva um programa que retroceda e retorne seu caminho da sequência vazia, para todas as palavras da lista em sucessão, de volta para a sequência vazia. Saída todas as seqüências intermediárias.
Por exemplo, dada a lista de entrada ["abc", "abd", "aefg", "h"]
, a saída deve ser:
a
ab
abc
ab
abd
ab
a
ae
aef
aefg
aef
ae
a
h
Regras
Você pode retornar ou imprimir uma lista de cadeias ou uma única cadeia com algum delimitador de sua escolha. Opcionalmente, você pode incluir as cadeias vazias inicial e final. É garantido que a entrada contenha pelo menos uma palavra e cada palavra contenha apenas letras ASCII em minúsculas ( a
- z
). Editar: seqüências consecutivas na entrada são garantidas para não serem iguais.
Isso é código-golfe ; o menor código em bytes vence.
Uma implementação de referência no Python 3: Experimente online!
["abc","abc"]
?
a,abc,abcde,abc,a,abc,abcde