Documente Academic
Documente Profesional
Documente Cultură
P1. Unii sunt deranja de numele primitivelor critice CAR, CDR i CONS. Definii noi
proceduri my-first, my-rest i construct care realizeaz acelai lucru. Putei defini i my-
second, my-third, etc.
P2. Definii rotate-left care primete o list ca argument i returneaz o nou list n
care primul element al listei de intrare este ultimul element al listei returnate.
P4. Un palindrom este o list care conine aceeai secven de elemente atunci cnd este
citit att de la stnga la dreapta ct i de la dreapta la stnga. Definii palindrom care
primete o list ca argument i returneaz un palindrom de lungime dubl.
P5. Definii ec2 care primete trei parametrii a, b si c i returneaz o list ce conine cele
dou rdcini ale ecuaiei de gradul doi a*x^2+b*x+c=0, folosind formula:
-b+-sqrt(b*b-4*a*c)
x= -----------------------------
2*a
(defun delta (a b c)
(- (* b b) (* 4 a c))
)
delta
(defun ec2 (a b c)
(cond ((<= 0 (delta a b c))
(append (cons (/ (- (- 0 b) (sqrt (delta a b c))) (* 2 a)) '())
(cons (/ (+ (- 0 b) (sqrt (delta a b c))) (* 2 a)) '())
)
)
((> 0 (delta a b c)) 'Ecuatia_nu_are_radacini_reale)
))
ec2
(ec2 2 1 -1)
(-1.0 0.5)
(ec2 4 2 9)
Ecuatia_nu_are_radacini_reale
P6. Definii propria versiune a predicatului EVENP. Putei folosi primitiva REM care
returneaz restul mparirii ntregi a dou numere.
P8. Definii predicatul NOT-REALP care ia trei parametrii i returneaz t dac b*b-
4*a*c < 0.
(defun not-realp (a b c)
(< (- (* b b) (* 4 a c)) 0))
not-realp
(not-realp `(3 4 -10))
nil
(not-realp `(5 9 4))
nil
(not-realp `(5 2 7))
t
(defun maxim (a b)
(cond ((<= a b) b)
((> a b) a)))
maxim
(maxim 4 5)
5
(maxim 9 0)
9
(maxim 5 5)
5
(maxim -7 7)
7
(defun minim (a b)
(cond ((<= a b) a)
((< b a) b)))
minim
(minim 10 2)
2
(minim -4 5)
-4
(minim 1 1)
1
(defun si (lista)
(cond ((< 0 (length (member nil lista))) nil)
((equal (member nil lista) nil) t)))
si
(si `(t t t))
t
(si `(nil t))
nil
(si `(t t t nil t))
nil
(defun mijlociu (a b c)
(cond ((<= a b c) b)
((<= b c a) c)
((<= c a b) a)
((>= a b c) b)
((>= b c a) c)
((>= c a b) a)
))
mijlociu
(mijlociu 7 9 2)
7