summary refs log tree commit diff stats
path: root/tests/arc/t17025.nim
Commit message (Expand)AuthorAgeFilesLines
* ARC Analysis in one pass v3 (#17068)Clyybber2021-02-171-0/+56
itle='author Arne Döring <arne.doering@gmx.net> 2018-11-14 23:14:16 +0100 committer Araq <rumpf_a@web.de> 2018-11-23 11:58:28 +0100 updated tests to be executed' href='/ahoang/Nim/commit/tests/misc/tstrdist.nim?h=devel&id=e012eb100109d343b7cdbe2598d439d84eda7830'>e012eb100 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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]

doAssert editDistance("abc", "abd") == 3