Está en la página 1de 4

Problemas de hojas y sub-arboles

1) multiplicacin hijos pares

(defun mul-hijos-pares(L)
(cond ((null L) 1)
(t (cond ((and (atom (car L)) (evenp (car L))) (* (car L) (mul-hijos-pares(cdr L))))
(t (mul-hijos-pares(cdr L))))))

2) Mostrar en lista la multiplicacin de las hojas -> (par impar)

(defun multi-elementos (L)

(list (multi-atomo-par L) (multi-atomo-impar L))


)

(defun multi-atomo-par(l)

(cond ((null l) 1)
(t (cond ((and (atom (car l)) (evenp (car l))) (* (car l) (multi-atomo-par(cdr l))))

(t (multi-atomo-par(cdr l)))))))

(defun multi-atomo-impar(l)

(cond ((null l) 1)
(t (cond ((and (atom (car l)) (oddp (car l))) (* (car l) (multi-atomo-impar(cdr l))))
(t (multi-atomo-impar(cdr l)))))))

3) Mostrar en lista la multiplicacin de los subarboles -> (par impar)

(defun multi-listas (L)

(list 'par (multi-list-par L) 'impar (multi-list-impar L))


)

(defun multi-list-par(l)

(cond ((null l) 1)
(t (cond ( (atom (car l)) (multi-list-par(cdr l)))
(t (* (multi-slista-p (car l)) (multi-list-par(cdr l))) )))))

(defun multi-slista-p(l)

(cond ((null l) 1)
(t (cond ((evenp (car l)) (* (car l) (multi-slista-p(cdr l))))

(t (multi-slista-p(cdr l))))))

(defun multi-list-impar(l)

(cond ((null l) 1)
(t (cond ( (atom (car l)) (multi-list-impar(cdr l)))
(t (* (multi-slista-imp (car l)) (multi-list-impar(cdr l))) )))))

(defun multi-slista-imp(l)

(cond ((null l) 1)
(t (cond ((oddp (car l)) (* (car l) (multi-slista-imp(cdr l))))
(t (multi-slista-imp(cdr l))))))
)

4) Ordenar las hojas en otra lista de forma ascendente

(defun ord-hojas(L)
(sort (poner-lista L) #'<)
)

(defun poner-lista (l)


(cond ((null L) '())

(t (cond ((atom (car l))(cons (car l) (poner-lista (cdr l))) )


(t (poner-lista (cdr l)))))))

También podría gustarte