Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for String Conversion by Kurush
import functools
@functools.cache
def levenshtein_distance(line1, line2, i, j):
if i == 0 or j == 0: return max(i, j)
elif line1[i - 1] == line2[j - 1]: return levenshtein_distance(line1, line2, i - 1, j - 1)
else: return 1 + min(levenshtein_distance(line1, line2, i, j - 1),
levenshtein_distance(line1, line2, i - 1, j),
levenshtein_distance(line1, line2, i - 1, j - 1))
def steps_to_convert(line1, line2):
return levenshtein_distance(line1, line2, len(line1), len(line2))
if __name__ == "__main__":
#These "asserts" using only for self-checking and not necessary for auto-testing
assert steps_to_convert('line1', 'line1') == 0, "eq"
assert steps_to_convert('line1', 'line2') == 1, "2"
assert steps_to_convert('line', 'line2') == 1, "none to 2"
assert steps_to_convert('ine', 'line2') == 2, "need two more"
assert steps_to_convert('line1', '1enil') == 4, "everything is opposite"
assert steps_to_convert('', '') == 0, "two empty"
assert steps_to_convert('l', '') == 1, "one side"
assert steps_to_convert('', 'l') == 1, "another side"
print("You are good to go!")
May 23, 2021