Levenshtein distance/Alignment: Difference between revisions
Content added Content deleted
m (→{{header|Sidef}}: update) |
m (→{{header|Sidef}}: updated code) |
||
Line 492: | Line 492: | ||
var A = [] |
var A = [] |
||
{|i| A[i][0]{@|<d s t>} = (i, s.ft(1, i).join, '~' * i) } << ^s |
|||
{|i| A[0][i]{@|<d s t>} = (i, '-' * i, t.ft(1, i).join) } << ^t |
|||
s.end |
for i (1 .. s.end) { |
||
t.end |
for j (1 .. t.end) { |
||
if (s[i] != t[j]) { |
if (s[i] != t[j]) { |
||
A[i][j]{:d} = 1+( |
A[i][j]{:d} = 1+( |
||
var min = Math.min(A[i-1][j]{:d}, A[i][j-1]{:d}, A[i-1][j-1]{:d}) |
var min = Math.min(A[i-1][j]{:d}, A[i][j-1]{:d}, A[i-1][j-1]{:d}) |
||
) |
) |
||
A[i][j]{@|<s t>} = |
A[i][j]{@|<s t>} = (A[i-1][j]{:d} == min |
||
? [A[i-1][j]{:s}+s[i], A[i-1][j]{:t}+'-'] |
? [A[i-1][j]{:s}+s[i], A[i-1][j]{:t}+'-'] |
||
: (A[i][j-1]{:d} == min |
: (A[i][j-1]{:d} == min |
||
? [A[i][j-1]{:s}+'-', A[i][j-1]{:t}+t[j]] |
? [A[i][j-1]{:s}+'-', A[i][j-1]{:t}+t[j]] |
||
: [A[i-1][j-1]{:s}+s[i], A[i-1][j-1]{:t}+t[j]])) |
: [A[i-1][j-1]{:s}+s[i], A[i-1][j-1]{:t}+t[j]]))... |
||
} |
} |
||
else { |
else { |