#:g1: GOOでL-99 (P15 要素を任意回数複製する)

Posted 2008-05-10 09:03:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
色々な型に対応しようと思うと、どうも再帰というよりは、forのようなループを多用してしまうような…。
LISPで再帰を多用するのは、扱うデータが主にリストだからという面もあるのでしょうか。

;(repli '(a b c c d) 3)
;=> (a a a b b b c c c c c c d d d)

;(repli #(a b c c d) 3) ;=> #(a a a b b b c c c c c c d d d)

;(repli #[a b c c d] 3) ;=> #[a a a b b b c c c c c c d d d]

;(repli "abccd" 3) ;=> aabbccccdd

(dg repli (u|<seq> times|<int> => <seq>))

(dm repli (u|<seq> times|<int> => <seq>) (def res (packer-fab <lst>)) (for ((x u)) (for ((i (range 1 <= times))) (pack-in res x))) (as (class-of u) (packed res)))


comments powered by Disqus