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ść?Odpowiedzi:
JavaScript,
167161154 bajtyZadzwoń z
l("Programming","golf")
Codepen
Odtłuszczony (i opatrzony adnotacjami) kod (nieaktualny, ale masz pomysł):
źródło
s
wewnątrza=a[s](1)
jakoa=a[s="slice"](1)
oszczędza niektóre bajty."Programming"
->"Codegolf"
, ale powinno to być 10.Haskell,
201194 bajtówDłuższy niż oczekiwano. Może mogę trochę pograć w golfa ...
Przykład użycia:
To brutalna siła, która decyduje między zmianą a usunięciem, jeśli początkowe znaki różnią się.
źródło