Rotating a list to the right in scheme
真面目に実装するのはだるいなぁと思ったのでこんな風に書いてみた。
(import (rnrs)
(srfi :1))
(define (rotate-right l)
(if (null? l)
l
(cons (car (last-pair l)) (drop-right l 1))))
(rotate-right '(1 2 3 4 5))
;; -> (5 1 2 3 4)
一応O(N)で動くと言えば動く。SRFI-1にsplit-at-rightみたいなのがあればリストを舐めるのが一回で済みそうではある。今週はネタも時間もなかったのでこんなので…(そのうち
split-at-rightを実装してもう少しマシなのを書くかもしれない。)
No comments:
Post a Comment