class distanceTable:
def __init__(self, n, m):
self.t = [[-1 for y in range(m)] for x in range(n)]
def __call__(self, i, j):
if i < 0:
return j+1
if j < 0:
return i+1
return self.t[i][j]
def set(self, i, j, value):
self.t[i][j] = value
def to_s(self):
return string.join(
[string.join(
[`cell` for cell in row], " ") for row in self.t], "\n")
def edit_distance(a, b):
m = len(a)
n = len(b)
distances = distanceTable(m, n)
for i in range(m):
for j in range(n):
if a[i] == b[j]:
cij = 0
else:
cij = 1
distances.set(i, j, min(
distances(i-1, j ) + 1,
distances(i, j-1) + 1,
distances(i-1, j-1) + cij
))
return distances(m-1, n-1)
import sys
if len(sys.argv) != 3:
print "Usage: editierdistanz WORT_1 WORT_2"
else:
print edit_distance(sys.argv[1], sys.argv[2])