Levenshtein distance/Alignment: Difference between revisions
Content added Content deleted
(→{{header|Wren}}: Now uses new core library method.) |
(J) |
||
Line 410: | Line 410: | ||
("rosettacode","r-----a---t")</pre> |
("rosettacode","r-----a---t")</pre> |
||
=={{header|J}}== |
|||
Translation of java: |
|||
<lang J>levalign=:4 :0 |
|||
assert. x <:&# y |
|||
D=. x +/&i.&>:&# y |
|||
for_i.1+i.#x do. |
|||
for_j.1+i.#y do. |
|||
if. ((<:i){x)=(<:j){y do. |
|||
D=.(D {~<<:i,j) (<i,j)} D |
|||
else. |
|||
min=. 1+<./D{~(i,j) <@:-"1#:1 2 3 |
|||
D=. min (<i,j)} D |
|||
end. |
|||
end. |
|||
end. |
|||
A=.B=.'' |
|||
ij=.x ,&# y |
|||
while.*/ij do. |
|||
'd00 d01 d10 d11'=. D{~ ij <@:-"1#:i.4 |
|||
'x1 y1'=. (ij-1){each x;y |
|||
if.d00 = d11+x1~:y1 do. |
|||
A=.A,x1 [ B=.B,y1 [ ij=.ij-1 |
|||
elseif.d00 = 1+d10 do. |
|||
A=.A,x1 [ B=.B,'-'[ ij=.ij-1 0 |
|||
elseif.d00 = 1+d01 do. |
|||
A=.A,'-'[ B=.B,y1 [ ij=.ij-0 1 |
|||
end. |
|||
end. |
|||
A,:&|.B |
|||
)</lang> |
|||
Task examples: |
|||
<lang J> 'place' levalign 'palace' |
|||
p-lace |
|||
palace |
|||
'rosettacode' levalign 'raisethysword' |
|||
r-oset-tacode |
|||
raisethysword |
|||
</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |