Rekurzívne prechádzame zoznam podobne ako v príklade cislavint, len tu ako výsledok vytvárame zoznam čísel.


; Ak by sme predpokladali, že všetky prvky zoznamu sú čísla, potom možno
; test NUMBERP vynechať.
(defun cislavint (zoz floor top)
 (cond ((null zoz) NIL)
       ((AND (NUMBERP (first zoz)) (OR (< (first zoz) floor) (> (first zoz) top))) (cons (first zoz) (cislavint (rest zoz) floor top)))
       (T (cislavint (rest zoz) floor top))
 )
)

; Príklady:
(cislavint '(a 1 2 3 b) 1 2)    ; -> (3)
(cislavint '(a 1 b -1 0 5) 2 4) ; -> (1 -1 0 5)

 


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