Ejercicios LISP
que añada el elemento a la lista en su segunda posición.
(defun anyade (l e) (append (list (car l) e) (cdr l)))
2. Define unafunción de dos argumentos, una lista y un elemento,
que cambie el segundo elemento de la lista por el suministrado como
argumento.
(defun cambia (l e) (subst e (second l) l))
3. Escribe unafunción que devuelva una lista con el primer y último
elemento de una lista suministrada como parámetro.
(defun priu (l) (list (car l)(car (reverse l))))
4. Escribe una función que permitasumar todos los elementos de una
lista de enteros.
(defun suma (l) (cond ((null l) 0)(t(+ (car l)(suma (cdr l))))))
5. Define una función que permita invertir una lista, sin utilizar lafunción predefinida reverse.
(defun invertir (l) (cond ((atom l) l)(t (append (invertir (cdr l)) (list (car l))))))
6. Escribe una función que permita eliminar duplicados consecutivos en
una lista.Por ejemplo, aplicada sobre la lista (1 1 1 2 2 1 2 3 4)
daría como resultado (1 2 1 2 3 4)
"(defun elrep(l) (cond ((atom l) l)((equal(car l)(car(cdr l))) (elrep(cdr l))) (t (cons (car l))(elrep(cdr l))))))"
7. Define una función que duplique los elementos de una lista. Por
ejemplo, aplicada sobre la lista (1 5 2 1 7 7) daría como resultado
(1 1 5 5 2 2 1 1 7 7 7 7)
(defun duplica(l) (cond ((atom l) l) (t (append(list(car l)(car l)) (duplica(cdr l))))))
8. Crear una lista que contenga todos los enteros en un rango
determinado. Si el primer argumento es menor que elsegundo, producir
la lista en orden decreciente. Por ejemplo, aplicada sobre los valores
3 y 5 daría como resultado la lista (3 4 5) y aplicada sobre 5 y 3
daría (5 4 3).
(defun rango (x y) (cond((= x y)(list y)) ((< x y)(cons x(rango (+ x 1) y)))(t(cons x(rango (- x 1) y)))))
9. Escribe una función que compruebe si una lista es palíndroma.
(defun palindroma (l) (equal l (reverse...
Regístrate para leer el documento completo.