W tym wyzwaniu napiszesz program, który przyjmuje dwa ciągi oddzielone znakiem nowej linii, s1 (pierwszy wiersz) i s2 (drugi wiersz) jako dane wejściowe (STDIN lub najbliższy). Możesz założyć, że długość s1 będzie zawsze mniejsza niż 30 i większa niż długość s2. Program powinien następnie wypisywać każdy krok w odległości levenshteina od s1 do s2.
Aby wyjaśnić, co oznacza każdy krok w odległości levenshtein, program wydrukuje n łańcuchów, gdzie n jest odległością levenshtein między s1 i s2, a odległość lewenshteina między dwoma sąsiednimi łańcuchami będzie zawsze równa jeden. Kolejność nie ma znaczenia. Dane wyjściowe powinny być oddzielone znakiem nowej linii i nie mogą zawierać s1, a tylko między nimi i s2. Program powinien również działać w niecałą minutę na nowoczesnym komputerze.
Przykłady:
Wejście:
Programming
Codegolf
Wynik:
rogramming
Cogramming
Coramming
Coamming
Codmming
Codeming
Codeging
Codegong
Codegolg
Codegolf
Wejście:
Questions
Answers
Wynik:
uestions
Aestions
Anstions
Ansions
Answons
Answens
Answers
Wejście:
Offline
Online
Wynik:
Ofline
Online
Wejście:
Saturday
Sunday
Wynik:
Sturday
Surday
Sunday
Oto link do skryptu Pythona, który drukuje odległość i kroki.
Dodatkowe zasady:
- Brak korzystania z Internetu
- Standardowe luki zastosowanie
To jest golf golfowy, więc kod powinien być krótki; najkrótszy kod wygrywa!
s1(newline)s2, jednak po ponownym przejrzeniu pytania zastanawiam się, czy zamiast tego zamierzałeś, aby program wybrał s1 i s2 na podstawie długości 2 wprowadzonych ciągów w dowolnej kolejności, czy mógłbyś wyjaśnić tę kwestię? To znaczy, czy zakładamy, że wejście to s1, po którym następuje s2, czy też wybieramy s1 i s2 na podstawie długości dwóch wejść?