Jest to kontynuacja tego wyzwania: Kod zbliżony do wyzwania: Suma liczb całkowitych
Wyzwanie w tym jest nieco trudniejsze, a także tworzy fajny tytuł (dlatego go wybrałem):
Oblicz odległość Levenshteina między dwoma strunami
Podobnie jak w ostatnim wyzwaniu, twój wynik w tym wyzwaniu to odległość Levenshteina między twoim kodem a cytatem powyżej.
A teraz szczegóły!
Twój program pobierze 2 dane wejściowe, oba ciągi bez spacji i znaków nowej linii, i wyświetli odległość Levenshteina między nimi. Odległość Levenshtien definiuje się jako liczbę dodatków, usunięć i podstawień niezbędnych do przekształcenia jednego łańcucha na inny. Aby uzyskać więcej informacji na temat tego, jak to obliczyć, zobacz stronę Wikipedii, do której prowadzi link powyżej. Aby sprawdzić, czy Twój program działa, użyj tego kalkulatora . Twój program musi wyświetlać tylko odległość Levenshteina między dwoma łańcuchami. Zostanie zdyskwalifikowany, jeśli zostanie wydane cokolwiek innego. Przykład I / O:
Inputs:
test
test2
Output:
1
Inputs:
222
515
Output:
3
Inputs:
Test
test
Output:
1
Twój kod może nie zawierać braków ani komentarzy.
źródło
R, odległość 35
To tworzy funkcję
Calculate
z parametramithe
iLevenshtein
. Wykorzystuje wbudowaną funkcję Radist
do obliczenia odległości. Parametry ciągu znakówadist
są w zasadzie zmienionethe
iLevenshtein
zmienione nabetween
itwo
.źródło
PHP4.1, odległość
32221514Bardzo podstawowy, nic ekscytującego.
Lub krótsza wersja:
Aby to zadziałało, musisz wysłać / ustawić zmienną sesji POST / GET / COOKIE / za pomocą klawiszy:
distance
(istance
dla krótszego)between_two_strings
(etweentwostrin
dla krótszego)Argumenty są w tej kolejności.
Przetestuj wynik na http://ideone.com/QzNZ8T
Przykład:
źródło
"Your code may not have no-ops or comments."
a twoja edycja po prostu dodała komentarz HTML.PHP, odległość 44
Użyj wbudowanej
levenshtein
funkcji ze standardowej biblioteki PHP i nazwij argumenty, aby spróbować zminimalizować odległość.źródło
$two,$strings
?;
echo$Calculate_the=levenshtein($_GET[distance_between_two],$_GET[strings]);
Pip, odległość 50
Nie używa wbudowanej funkcji Levenshtein!
Ten kod implementuje rekurencyjny algorytm Levenshteina ; jako taki jest bardzo powolny, zajmuje kilka sekund nawet dla ciągów o długości 5. Nie polecam uruchamiania programu przez siebie, aby go sprawdzić!
Oto mój kod podstawowy z białymi znakami i komentarzami:
Główną zmianą w ostatecznej wersji jest przypisanie wartości do pewnych zmiennych tymczasowych
c
ie
, które pojawiają się w ciągu wyzwania, a tym samym zmniejszyć dystans Levenshteina trochę.źródło