Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- levenshtein::[Char] -> [Char] -> Int
- levenshtein "" "" = 0
- levenshtein "" s2 = length s2
- levenshtein s1 "" = length s1
- levenshtein s1 s2
- | last s1 == last s2 = levenshtein (init s1) (init s2)
- | otherwise = minimum [1 + levenshtein (init s1) s2,
- 1 + levenshtein s1 (init s2),
- 1 + levenshtein (init s1) (init s2)]
- levenshtein2::[Char] -> [Char] -> Int
- levenshtein2 "" "" = 0
- levenshtein2 "" s2 = length s2
- levenshtein2 s1 "" = length s1
- levenshtein2 s1 s2
- | head s1 == head s2 = levenshtein (tail s1) (tail s2)
- | otherwise = 1 + minimum [levenshtein (tail s1) s2,
- levenshtein s1 (tail s2),
- levenshtein (tail s1) (tail s2)]
- levenshtein3 :: [Char] -> [Char] -> Int
- levenshtein3 s t =
- d !! m !! n
- where m = length s
- n = length t
- d = [[d2 i j | j <- [0..n]] | i <- [0..m]]
- d2 0 0 = 0
- d2 i 0 = i
- d2 0 j = j
- d2 i j
- | s !! (i-1) == t !! (j-1) = d !! (i-1) !! (j-1)
- | otherwise = 1 + minimum [
- d !! (i-1) !! j,
- d !! (i-1) !! (j-1),
- d !! i !! (j-1)
- ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement