Napíšeme funkciu ktorá ponechá zo zoznamu na ľubovolnej úrovni vždy len 2 prvé prvky (funkcia dva). A potom ju vo funkcií dvojice zavoláme na všetky prvky hlavného zoznamu. Predpokladáme, že vstupom je zoznam zoznamov a atómov.


(defun dva (sv)
 (cond ((ATOM sv) sv)
       ((NULL (rest sv)) (cons (dva (first sv)) NIL))
       (T (list (dva (first sv)) (dva (second sv))))
 )
)

; Hlavná funkcia.
(defun dvojice (zoz)
 (cond ((NULL zoz) NIL)
       (T (cons (dva (first zoz)) (dvojice (rest zoz))))
 )
)

; Príklady:
(dvojice '(1 (2 3 4) 5 6))     ; -> (1 (2 3) 5 6)
(dvojice '(1 ((2) (3 4 5)) 3)) ; -> (1 ((2) (3 4)) 3)

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