RESOLUCION DE LA PRACTICA CALIFICADA Nº1
PREGUNTA 01
Eliminar la lista L1 de la lista L2.
L1 = (1 2)
L2= (1 2 3 4 ( 5 6) (1 2) )
Solución:
CL-USER 32 : 6 > setq l1 '(5 6)
(5 6)
CL-USER 32 : 7 > seqt l2 '(1 2 3 4 (5 6) 1 2)
CL-USER 32 : 8 >
(defun a (l1 l2 l3)
(if (listp (car l2)) (if (equal (car l2) l1) (setq l3 (append l3 (list(cdr l2))))())
(progn (setq l3 (append l3 (list(car l2)))) (a l1 (cdr l2) l3))))
A
CL-USER 33 : 8 > a l1 l2 l3
(1 2 3 4 (1 2))
CL-USER 33 : 8 > a l1 l2 l3
(1 2 3 4 (1 2))
PREGUNTA 02
Generar un algoritmo recursivo para_
Sm(x) = x+ x/2+ x/4+ x/8 + …+x/2x
Y calcular
Sm(5)
Sm (2)
(defun sm(x)
(if(eq x 0) 0 (+ x (* x (sumrecursiva x)))))
(defun sumrecursiva(x)
(if (eq x 1) 0.5 (+ (/ 1 (expt 2 x)) (sumrecursiva (- x 1)))))
sm 5
9.84375
sm 2
PREGUNTA 03
RemPenult L1 L2
(1 2 3 4 ( a b c) (1 2) )
(defun el (l1 l2 p c)
(if (null l2) nil
(if (= p c)
(append (list l1) (el l1 (cdr l2) p (+ c 1)))
(append (list (car l2) ) (el l1 (cdr l2) p (+ c 1)))
)
))
( defun RemPenult ( l1 l2)
( el l1 l2 (- ( length l2) 2 ) 0 ) )