RosettaCodeData/Task/Non-continuous-subsequences/Common-Lisp/non-continuous-subsequences-2.lisp
Ingy döt Net b83f433714 tasks a-s
2013-04-10 23:57:08 -07:00

16 lines
658 B
Common Lisp

(defun all-subsequences2 (list)
(labels ((recurse (s list)
(if (endp list)
(if (>= s 3)
'(())
'())
(let ((x (car list))
(xs (cdr list)))
(if (evenp s)
(append (mapcar (lambda (ys) (cons x ys))
(recurse (+ s 1) xs))
(recurse s xs))
(append (mapcar (lambda (ys) (cons x ys))
(recurse s xs))
(recurse (+ s 1) xs)))))))
(recurse 0 list)))