Existuje viacero možností riešenia.
1.možnost.
Prvky netreba počítať, stačí, keď prechádzame zoznam a
meníme hodnotu jednej pomocnej premennej.
2.možnost.
Iny prístup je prechádzať zoznam po dvoch prvkoch a vypísať
vždy druhý.
; 1.možnost.
(defun vynechaj (i zoz)
(cond ((null zoz) NIL)
((= i 0) (vynechaj 1 (rest zoz)))
(T (cons (first zoz) (vynechaj 0 (rest zoz))))
)
)
(defun pozp_a (zoz)
(vynechaj 0 zoz)
)
; Príklady:
(pozp_a '(1 2 3 4 5 6)) ; -> (2 4 6)
(pozp_a '(1)) ; -> NIL
; 2.možnost.
(defun pozp_b (zoz)
(cond ((null zoz) NIL)
((null (rest zoz)) NIL)
(T (cons (first (rest zoz)) (pozp_b (rest (rest zoz)))))
)
)
; Príklady:
(pozp_b '(1 2 3 4 5 6)) ; -> (2 4 6)
(pozp_b '(1)) ; -> NIL