Levenshtein distance/Alignment: Difference between revisions
Content added Content deleted
(J) |
m (J -- style changes which help cater to flaws in rosettacode's syntax colorizer) |
||
Line 418: | Line 418: | ||
assert. x <:&# y |
assert. x <:&# y |
||
D=. x +/&i.&>:&# y |
D=. x +/&i.&>:&# y |
||
for_i.1+i.#x do. |
for_i. 1+i.#x do. |
||
for_j.1+i.#y do. |
for_j. 1+i.#y do. |
||
if. ((<:i){x)=(<:j){y do. |
if. ((<:i){x)=(<:j){y do. |
||
D=.(D {~<<:i,j) (<i,j)} D |
D=. (D {~<<:i,j) (<i,j)} D |
||
else. |
else. |
||
min=. 1+<./D{~(i,j) <@:-"1#:1 2 3 |
min=. 1+<./D{~(i,j) <@:-"1#:1 2 3 |
||
Line 428: | Line 428: | ||
end. |
end. |
||
end. |
end. |
||
A=.B=.'' |
A=. B=. '' |
||
ij=.x ,&# y |
ij=. x ,&# y |
||
while.*/ij do. |
while. */ij do. |
||
'd00 d01 d10 d11'=. D{~ ij <@:-"1#:i.4 |
'd00 d01 d10 d11'=. D{~ ij <@:-"1#:i.4 |
||
'x1 y1'=. (ij-1){each x;y |
'x1 y1'=. (ij-1){each x;y |
||
if.d00 = d11+x1~:y1 do. |
if. d00 = d11+x1~:y1 do. |
||
A=.A,x1 [ B=.B,y1 [ ij=.ij-1 |
A=. A,x1 [ B=. B,y1 [ ij=. ij-1 |
||
elseif.d00 = 1+d10 do. |
elseif. d00 = 1+d10 do. |
||
A=.A,x1 [ B=.B,'-'[ ij=.ij-1 0 |
A=. A,x1 [ B=. B,'-'[ ij=. ij-1 0 |
||
elseif.d00 = 1+d01 do. |
elseif. d00 = 1+d01 do. |
||
A=.A,'-'[ B=.B,y1 [ ij=.ij-0 1 |
A=. A,'-'[ B=. B,y1 [ ij=. ij-0 1 |
||
end. |
end. |
||
end. |
end. |