Laborator 5

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