lev.ml 402 B

1234567891011121314
  1. let levenshtein s t =
  2. let rec dist i j = match (i,j) with
  3. | (i,0) -> i
  4. | (0,j) -> j
  5. | (i,j) ->
  6. if s.[i-1] = t.[j-1] then dist (i-1) (j-1)
  7. else let d1, d2, d3 = dist (i-1) j, dist i (j-1), dist (i-1) (j-1) in
  8. 1 + min d1 (min d2 d3)
  9. in
  10. dist (String.length s) (String.length t)
  11. let () =
  12. Printf.printf "%d\n" (levenshtein Sys.argv.(1) Sys.argv.(2))