Existuje viacero možností riešenia.
1.možnosť.
Prvky netreba počítať, stačí, keď prechádzame zoznam a
meníme hodnotu jednej pomocnej premennej.
2.možnosť.
Iný prístup je prechádzať zoznam po dvoch prvkoch a vypísať
vždy prvý.
; 1.možnosť.
; Takisto ako v príklade pozp.
(defun vynechaj (i zoz)
(cond ((null zoz) NIL)
((= i 0) (vynechaj 1 (rest zoz)))
(T (cons (first zoz) (vynechaj 0 (rest zoz))))
)
)
; Takisto ako v príklade pozp,
; len úvodná inicializácia je 1.
(defun pozn_a (zoz)
(vynechaj 1 zoz)
)
; Príklady:
(pozn_a '(1 2 3 4 5 6)) ; -> (1 3 5)
(pozn_a '(1)) ; -> (1)
; 2.možnosť.
(defun pozn_b (zoz)
(cond ((null zoz) NIL)
((null (rest zoz)) zoz)
(T (cons (first zoz) (pozn_b (rest (rest zoz)))))
)
)
; Príklady:
(pozn_b '(1 2 3 4 5 6)) ; -> (1 3 5)
(pozn_b '(1)) ; -> (1)