summary refs log tree commit diff stats
path: root/tests/compile/tstrdist.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-11-19 15:45:51 +0100
committerAraq <rumpf_a@web.de>2011-11-19 15:45:51 +0100
commita274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82 (patch)
tree95dc5bf7fe3716a3ab266f78094fccce38c94ccf /tests/compile/tstrdist.nim
parentd0772feb08baaea12bfdad0a7c20a41733f977bd (diff)
downloadNim-a274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82.tar.gz
got rid of 'accept' dir in the tests
Diffstat (limited to 'tests/compile/tstrdist.nim')
-rwxr-xr-xtests/compile/tstrdist.nim26
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"))