lev.clj 495 B

1234567891011121314
  1. (defn levenshtein [str1 str2]
  2. (let [len1 (count str1)
  3. len2 (count str2)]
  4. (cond (zero? len1) len2
  5. (zero? len2) len1
  6. :else
  7. (let [cost (if (= (first str1) (first str2)) 0 1)]
  8. (min (inc (levenshtein (rest str1) str2))
  9. (inc (levenshtein str1 (rest str2)))
  10. (+ cost
  11. (levenshtein (rest str1) (rest str2))))))))
  12. (println (levenshtein (first *command-line-args*) (second *command-line-args*)))