RosettaCodeData/Task/Longest-common-subsequence/Clojure/longest-common-subsequence.clj

11 lines
278 B
Clojure
Raw Permalink Normal View History

2013-04-10 21:29:02 -07:00
(defn longest [xs ys] (if (> (count xs) (count ys)) xs ys))
(def lcs
(memoize
(fn [[x & xs] [y & ys]]
(cond
2017-09-23 10:01:46 +02:00
(or (= x nil) (= y nil)) nil
2013-04-10 21:29:02 -07:00
(= x y) (cons x (lcs xs ys))
2017-09-23 10:01:46 +02:00
:else (longest (lcs (cons x xs) ys)
(lcs xs (cons y ys)))))))