Laborator 5
Problema 1
(defun nrElements(lista) (if(equal lista nil) 0 (+ 1 (nrElements(cdr lista)) ) ))
(defun countAtoms (lista)(if (equal lista nil) 0 (if (atom (car lista)) (+ 1 (countAtoms (cdr lista)))
(+ (countatoms (car lista)) (countatoms (cdr lista)) )
)
)
)
Problema 2
(defun rotLeftOnce(lista) (append (cdr lista ) ( list (car lista) ) ) )
(defun rotLeft(lista n) ( if(= n 0) lista (rotLeft (rotLeftOnce lista) (- n 1) ) ) )
(defun rotRightOnce(lista) ( rotLeft lista (- (length lista) 1) ) )
(defun rotRight(lista n) ( if(= n 0) lista (rotRight ( rotRightOnce lista) (- n 1 ) ) ) )
(defun rotRightOnce (lista)(append (last lista) (reverse (cdr (reverse lista) ) ) ) )
Problema 3
(defun fara_dubluri (lst)
(if(null lst) '()
(if (member (car lst) (cdr lst))
(fara_dubluri (cdr lst))
(append (list(car lst)) (fara_dubluri (cdr lst)))
)
)
)
Problema 4
(defun presentp (lst atm)
(cond
((null lst) nil)
((listp (car lst)) (or (presentp (car lst) atm) (presentp (cdr lst) atm)))
((atom (car lst)) (if (equal (car lst) atm)
T
(presentp (cdr lst) atm)
))
)
)
Problema 5
(defun cifre(numar) (if (= 0 numar) nil ( cons (mod numar 10) ( cifre (floor (/ numar 10) ) ) ) ) )
Problema 6
(defun pozpar (lst)
(
do
(
(l lst (cddr l))
(x '() (append x (list (car l))))
)
((null l) x)
)
)
Problema 7
(defun cmmdc(a b) (do ( c ) ( (zerop b) a) ( setq c (mod a b) ) ( setq a b) (setq b c ) ) )