Oto sposób cofania i ponownego wpisywania jednego łańcucha na drugi:
- Zacznij od pierwszego ciągu.
- Usuń znaki na końcu, aż wynik będzie prefiksem drugiego ciągu. (Może to zająć 0 kroków.)
- Dodaj znaki na końcu, aż wynik będzie równy drugiemu ciągowi. (Może to również wymagać 0 kroków.)
Na przykład ścieżka od fooabcdo fooxyzwygląda następująco:
fooabc
fooab
fooa
foo
foox
fooxy
fooxyz
Zadanie
Biorąc pod uwagę listę słów, napisz program, który cofa się i ponownie typuje swoją drogę od pustego łańcucha, do wszystkich kolejnych słów z listy, z powrotem do pustego łańcucha. Wyprowadza wszystkie łańcuchy pośrednie.
Na przykład, biorąc pod uwagę listę danych wejściowych ["abc", "abd", "aefg", "h"], dane wyjściowe powinny być:
a
ab
abc
ab
abd
ab
a
ae
aef
aefg
aef
ae
a
h
Zasady
Możesz zwrócić lub wydrukować listę ciągów znaków lub pojedynczy ciąg znaków z wybranym ogranicznikiem. Opcjonalnie możesz dołączyć początkowe i końcowe puste ciągi. Dane wejściowe z pewnością zawierają co najmniej jedno słowo, a każde słowo może zawierać tylko małe litery ASCII ( a- z). Edycja: gwarantuje, że kolejne ciągi wejściowe nie będą sobie równe.
To jest golf golfowy ; najkrótszy kod w bajtach wygrywa.
Referencyjna implementacja w Pythonie 3: Wypróbuj online!
["abc","abc"]?
a,abc,abcde,abc,a,abc,abcde