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)

 


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