JUI - 3. cviceni
;funkce otoc, ktera otoci poradi prvku v seznamu (bez podseznamu)
;tj. (1 2 (5 4) 3) -> (3 (5 4) 2 1)
(defun otoc (seznam)
(cond
( (eq seznam nil) seznam)
(T (cons (car (last seznam)) (otoc (butlast seznam) ) ) )
)
)
(apply adr_funkce seznam parametru)
; vola funkci
(apply #'+ '(1 2 3 4))
; #'x vraci adresu funkce +
mapcar - pro kazdy prvek seznamu spusti funkci s parametry, vysledky se spoji do seznamu
(mapcar adresa_funkce seznam)
; prvky seznamu se aplikuji na funkci, vysledek je seznam vysledku
(mapcar #'list '(1 2 3) '(5 6 7) '(7 9 20))
; vraci (1 5 7) (2 6 9) (3 7 10)
;pomoci funkce mapcar definujte funkci PRUMERY, ktera vraci seznam prumeru odpovdajicich si prvku ve dvou seznamech
(defun av(a b)
(/ (+ a b) 2)
)
(defun prumery (x y)
(mapcar #'av x y)
)
;nebo pres nepojmenovanou funkci = "lambda"
(defun prum (x y)
(mapcar #'(lambda (a b) (/(+ a b) 2)) x y)
)
;funkce ktera vrati nejvetsi prvek
(defun mx(a b)
(if (> a b) a b)
)
(Defun maxx (&rest seznam)
(if (eq (cdr seznam) nil)
(car seznam)
(mx (car seznam) (apply #'maxx (cdr seznam)))
)
)
(defun maax (x &rest y)
(setf tmp x)
(mapc #'(lambda (z) (if (> z tmp) (setf tmp z))) y)
tmp
)
Back to top