diff options
author | Araq <rumpf_a@web.de> | 2011-11-19 15:45:51 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-11-19 15:45:51 +0100 |
commit | a274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82 (patch) | |
tree | 95dc5bf7fe3716a3ab266f78094fccce38c94ccf /tests/compile/tstrdist.nim | |
parent | d0772feb08baaea12bfdad0a7c20a41733f977bd (diff) | |
download | Nim-a274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82.tar.gz |
got rid of 'accept' dir in the tests
Diffstat (limited to 'tests/compile/tstrdist.nim')
-rwxr-xr-x | tests/compile/tstrdist.nim | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/compile/tstrdist.nim b/tests/compile/tstrdist.nim new file mode 100755 index 000000000..3e1939e73 --- /dev/null +++ b/tests/compile/tstrdist.nim @@ -0,0 +1,26 @@ +# compute the edit distance between two strings + +proc editDistance(a, b: string): int = + var + c: seq[int] + n = a.len + m = b.len + newSeq(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")) |