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

 


Autori[ ZADANIE | AKO ZAČAŤ | RIEŠENIE ]
Posledná aktualizácia 4. 9. 2001
back  home  next