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

Posted 2008-06-03 19:20:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
うーん、これだ!というようなpfcでの良い書き方がありそうな気がする問題ではあるのですが、全然思い付けません。

(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]]

(define (pack lst) (if (null lst) () (pack1 lst () ())))

(define (pack1 lst tem res) (let ((head (hd lst)) (tail (tl lst))) (if (consp tail) (if (= head (hd tail)) (pack1 tail (++ [head] tem) res) (pack1 tail () (++ res [(cons head tem)]))) (++ res [(cons head tem)]))))

comments powered by Disqus