Levenshtein distance: Difference between revisions
Content added Content deleted
(Added Frink) |
|||
Line 265: | Line 265: | ||
every process(!&input) |
every process(!&input) |
||
end |
end |
||
procedure process(s) |
procedure process(s) |
||
⚫ | |||
s ? { |
|||
⚫ | |||
s1 := tab(upto(' \t')) | fail |
|||
⚫ | |||
⚫ | |||
} |
|||
end |
end |
||
procedure levenshtein(s, t) |
procedure levenshtein(s, t) |
||
if *s = |
if (n := *s+1) = 1 then return *t |
||
if *t = |
if (m := *t+1) = 1 then return *s |
||
n := *s+1 |
|||
m := *t+1 |
|||
every !(d := list(n,0)) := list(m, 0) |
every !(d := list(n,0)) := list(m, 0) |
||
every i := 1 to max(n,m) do d[i,1] := d[1,i] := i |
every i := 1 to max(n,m) do d[i,1] := d[1,i] := i |
||
Line 285: | Line 280: | ||
min(d[iM1,j], d[i,jM1:=j-1], |
min(d[iM1,j], d[i,jM1:=j-1], |
||
d[iM1,jM1] + if s_i == t[jM1] then -1 else 0) + 1 |
d[iM1,jM1] + if s_i == t[jM1] then -1 else 0) + 1 |
||
return d[n,m]-1 |
return d[n,m]-1 |
||
end</lang> |
end</lang> |