Predpokladáme, že postupnosť nie je usporiadaná. Preto ju treba celú prejsť a na záver vrátiť nájdené minimum (väčšie ako zadané číslo). Použitie pomocného argumentu zjednodušuje hľadanie minima.


(defun gtminpom (zoz cislo minimum)
 (cond ((null zoz) minimum)
       ((AND (> (first zoz) cislo) (< (first zoz) minimum)) (gtminpom (rest zoz) cislo (first zoz)))
       (T (gtminpom (rest zoz) cislo minimum))
 )
)

; Vráti prvé číslo zo zoznamu väčšie ako zadané.
(defun vacsie_ako (zoz cislo)
 (cond ((null zoz) NIL)
       ((> (first zoz) cislo) (first zoz))
       (T (vacsie_ako (rest zoz) cislo))
 )
)

; Inicializujeme.
(defun gtmin (zoz cislo)
 (cond ((null (vacsie_ako zoz cislo)) NIL)
       (T (gtminpom zoz cislo (vacsie_ako zoz cislo)))
 )
)

Príklady:
(gtmin '(1 2 3 4 5 7 2) 4) -> 5
(gtmin '(1 2 9 7 2) 4) -> 7
(gtmin '(1 3 2) 4) -> NIL

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