Prechádzame obe postupnosti rekurzívne súčasne. Vždy z jednej vyberieme číslo do výsledku (vždy to menšie) a pokračujeme. Ak sa čísla rovnajú, vyberieme ich z oboch postupností, ale do výsledku číslo vrátime len raz.


; Predpokladáme, že postupnosti sú usporiadané vzostupne.
; Vždy vyberáme minimum.
; Predpokladáme, že v daných postupnostiach, v každej osobitne,
; nie je viacnásobný výskyt prvkov.

(defun zluc (zoz1 zoz2)
 (cond ((null zoz1) zoz2)
       ((null zoz2) zoz1)
       ((= (first zoz1) (first zoz2)) (cons (first zoz1) (zluc (rest zoz1) (rest zoz2))))
       ((< (first zoz1) (first zoz2)) (cons (first zoz1) (zluc (rest zoz1) zoz2)))
       (T (cons (first zoz2) (zluc zoz1 (rest zoz2))))
 )
)

; Príklady:
(zluc '(1 2 3) '(2 3 4 5)) -> (1 2 3 4 5)
(zluc '(1 3 5) '(2 5 9))   -> (1 2 3 5 9)

 


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