Nim/tests/tstrdist.nim
2008-06-22 16:14:11 +02:00

29 lines
608 B
Nim
Executable file

# compute the edit distance between two strings
import
io
proc editDistance(a, b: string): int =
var c: seq[int] = []
var
n = a.len
m = b.len
setLength(c, (n+1)*(m+1))
for i in 0..n:
c[i*n] = i # [i,0]
for j in 0..m:
c[j] = j # [0,j]
for i in 1..n:
for j in 1..m:
var x = c[(i-1)*n + j]+1
var y = c[i*n + j-1]+1
var z: int
if a[i-1] == b[j-1]:
z = c[(i-1)*n + j-1]
else:
z = c[(i-1)*n + j-1]+1
c[(i-1)*n + (j-1)] = min(x,min(y,z))
return c[n*m]
write(stdout, editDistance("abc", "abd"))