Ecco come backspace-and-retype da una stringa all'altra:
- Inizia dalla prima stringa.
- Rimuovi i caratteri alla fine fino a quando il risultato non è un prefisso della seconda stringa. (Questa operazione può richiedere 0 passaggi.)
- Aggiungi caratteri alla fine fino a quando il risultato è uguale alla seconda stringa. (Anche questo può richiedere 0 passaggi.)
Ad esempio, il percorso da fooabca fooxyzappare come:
fooabc
fooab
fooa
foo
foox
fooxy
fooxyz
Compito
Dato un elenco di parole, scrivi un programma che si sposta indietro e riscrive dalla stringa vuota, a tutte le parole dell'elenco in successione, di nuovo alla stringa vuota. Emette tutte le stringhe intermedie.
Ad esempio, dato l'elenco di input ["abc", "abd", "aefg", "h"], l'output dovrebbe essere:
a
ab
abc
ab
abd
ab
a
ae
aef
aefg
aef
ae
a
h
Regole
È possibile restituire o stampare un elenco di stringhe o una singola stringa con delimitatore di scelta. Se lo desideri, puoi includere le stringhe vuote iniziali e finali. Si garantisce che l'input contenga almeno una parola e che ogni parola contenga solo lettere ASCII minuscole ( a- z). Modifica: le stringhe consecutive nell'input sono garantite per non eguagliarsi a vicenda.
Questo è code-golf ; vince il codice più breve in byte.
Un'implementazione di riferimento in Python 3: provala online!
["abc","abc"]?
a,abc,abcde,abc,a,abc,abcde