Použijeme funkciu na spočítanie prvkov zoznamu. Budeme prechádzať hlavný zoznam a sledovať veľkosti podzoznamov, v argumente funkcie si môžeme udržovať aktuálne maximum. Po prejdení celého zoznamu funkcia vráti pomocný argument - t.j. počet prvkov najdlhšieho podzoznamu.


Zoznam musí mať len podzoznamy, ak by to bolo inak, treba
vratmaxzozpom modifikovať.

Na počítanie prvkov môžeme použiť funkciu pocet.
(defun pocet (zoz)
 (cond ((null zoz) 0)
       (T (+ 1 (pocet (rest zoz))))
 )
)

(defun vratmaxzozpom (zoz maximum)
 (cond ((null zoz) maximum)
       ((> (pocet (first zoz)) maximum) (vratmaxzozpom (rest zoz) (pocet (first zoz))))
       (T (vratmaxzozpom (rest zoz) maximum))
 )
)

(defun vratmaxzoz (zoz)
 (vratmaxzozpom zoz 0)
)

Príklady:
(vratmaxzoz '((1) () (a b c d) (1 2 3))) -> 4
(vratmaxzoz '(()) )  -> 0

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