Aquí le mostramos cómo retroceder y volver a escribir de una cadena a otra:
- Comience desde la primera cadena.
- Elimine los caracteres al final hasta que el resultado sea un prefijo de la segunda cadena. (Esto puede tomar 0 pasos).
- Agregue caracteres al final hasta que el resultado sea igual a la segunda cadena. (Esto también puede tomar 0 pasos).
Por ejemplo, la ruta de fooabc
a se fooxyz
ve así:
fooabc
fooab
fooa
foo
foox
fooxy
fooxyz
Tarea
Dada una lista de palabras, escriba un programa que retroceda y vuelva a escribir su camino desde la cadena vacía, a todas las palabras de la lista en sucesión, de vuelta a la cadena vacía. Salida de todas las cadenas intermedias.
Por ejemplo, dada la lista de entrada ["abc", "abd", "aefg", "h"]
, la salida debería ser:
a
ab
abc
ab
abd
ab
a
ae
aef
aefg
aef
ae
a
h
Reglas
Puede devolver o imprimir una lista de cadenas, o una sola cadena con algún delimitador de elección. Opcionalmente, puede incluir las cadenas vacías iniciales y finales. Se garantiza que la entrada contiene al menos una palabra, y cada palabra solo contiene letras minúsculas ASCII ( a
- z
). Editar: se garantiza que las cadenas consecutivas en la entrada no sean iguales entre sí.
Este es el código de golf ; el código más corto en bytes gana.
Una implementación de referencia en Python 3: ¡ Pruébelo en línea!
["abc","abc"]
?
a,abc,abcde,abc,a,abc,abcde