#:g1: closでL-99 (P09 連続して現われる要素を纏める)

Posted 2008-03-11 10:32:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
なんだかあまり面白くないパズルの様相を呈して来ました。こういうのではなくて、まともにclosの勉強をしなくては(笑)

(pack '(a a a a b c c a a d e e e e))
;=> ((A A A A) (B) (C C) (A A) (D) (E E E E))

(defmethod pack ((lst null)) () ) (defmethod pack (lst) (pack1 lst () () ))

(defmethod pack1 ((lst null) acc res) (nreverse (cons acc res))) (defmethod pack1 ((lst cons) (acc null) res) (pack1 (cdr lst) (cons (car lst) acc) res)) (defmethod pack1 ((lst cons) acc res) (if (equal (car lst) (car acc)) (pack1 (cdr lst) (cons (car lst) acc) res) (pack1 lst () (cons acc res))))


comments powered by Disqus