Thursday, 18 December 2008
99 Problems in Lisp (Part IV)
P11 - Modified Run length encoding
P12 - Decode a run length encoding list
(defn encode-modified [lst]
((fn [xs accum]
(if (= nil xs)
accum
(recur (rest xs)
(concat accum
(list
(if (= (count (first xs)) 1)
(ffirst xs)
(list (count (first xs)) (ffirst xs)))))))) (pack-list lst) nil))
P12 - Decode a run length encoding list
(defn decode [lst]
((fn [xs accum]
(if (= nil xs)
accum
(recur (rest xs)
(if (list? (first xs))
(concat accum (replicate (ffirst xs) (first (rfirst xs))))
(concat accum (list (first xs))))))) lst nil))
Labels: clojure
Subscribe to Posts [Atom]