====== 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 )