Sujet : P16 (**) Drop every N'th element from a list.
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lispDate : 02. Sep 2024, 09:10:35
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vb3od7$1snrj$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
Example:
* (drop '(a b c d e f g h i k) 3)
Where is "j"?
(A B D E G H K)
"
(defun drop (list n)
(loop
:for elt :in list
:for i :from 1
:for die-elt-die! = (zerop (mod i n))
:unless die-elt-die!
:collect elt))
Gauche Scheme
(use srfi-1) ;; circular-list
(define (dropnth xs n)
(filter-map
(lambda (x b) (and b x))
xs
(cdr (apply circular-list #f (make-list (- n 1) #t)))))
(dropnth '(a b c d e f g h i j k l m) 3)
===>
(a b d e g h j k m)