levenshtein-distance #4clojure
levenshtein-distance - 猫的怠惰Daysをgolf、というか4clojureに投稿したコードを晒してみる。
(defn levenshtein-distance [x y] (last (reduce (fn [prev j] (reduce (fn [curr i] (conj curr (+ 1 (min (nth prev (+ i 1)) (nth curr i) (- (nth prev i) (if (= (nth x i) (nth y j)) 1 0)))))) [(+ j 1)] (range (count x)))) (range (+ 1 (count x))) (range (count y)))))
不要なとこを削ってるだけでやってる事はほぼ同じ。
これをさらに色々削ってくと140ポイント(4clojureのgolfscoreは空白を除いた文字数)まで縮みます。
4clojure-golf/101_Levenshtein Distance.clj at master · youz/4clojure-golf · GitHub
ついでに#4clojureで見つけたlucasさんのメモ化再帰を使用した方法。
lucas1000001-4clojure-solution101.clj
スマート。こちらは削ると142まで縮みます。(多分)
しかしwith-local-varsはもっと短い名前で良い気がするな…