Initial import
This commit is contained in:
commit
405b86068e
324 changed files with 163599 additions and 0 deletions
29
tests/tstrdist.nim
Executable file
29
tests/tstrdist.nim
Executable file
|
|
@ -0,0 +1,29 @@
|
|||
# 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"))
|
||||
Loading…
Add table
Add a link
Reference in a new issue