Loading [MathJax]/extensions/tex2jax.js

2010年7月15日木曜日

Drop every N'th element from a list

;; P16 (**) Drop every N'th element from a list.
;; Example:
;; * (drop '(a b c d e f g h i k) 3)
;; (A B D E G H K)
(define (drop lst x)
(let loop ((lst lst) (i 1) (acc '()))
(let ((revacc (reverse acc)))
(if (null? lst)
revacc
(let ((tail (cdr lst)))
(cond ((< (length lst) x)
(append revacc tail))
((= i x)
(loop tail 1 acc))
(else
(loop tail (+ 1 i) (cons (car lst) acc)))))))))
view raw p16.ss hosted with ❤ by GitHub

0 件のコメント:

コメントを投稿