Lisp
Ejercicio # 1
1. Descripción
Crear una función que permita contar el número de elementos de una lista.
2. Solución
Definimos una función llamada contar que recibe como parámetro una lista que no esté vacía, para hacer esta evaluación utilizamos la función cond.
Después procedemos a realizar el conteo de los elementos de la lista mediante la implementación de lafunción recursiva contar.
(defun contar(x)
(cond ( (null x) 0)
(t (+ 1 (contar (cdr x)))
)
)
)
3. Ejecución
Ejercicio # 2
1. Descripción
Obtener el promedio de una lista de números a través de una función recursiva.
2. Solución
Para el presente ejercicio realizamos tres funciones:
La primera función llamada suma, recibe como parámetro una lista que no esté vacía, para hacer estaevaluación utilizamos la función cond. Después procedemos a realizar la suma de los elementos de la lista mediante la implementación de la función recursiva suma.
La segunda función llamada contar, recibe como parámetro la misma lista y después procedemos a realizar el conteo de los elementos de la lista mediante la implementación de la función recursiva contar.
La tercera función llamadamedia, ejecuta las funciones suma y contar, y divide el resultado de la primera para el resultado de la segunda.
(defun suma(x)
(cond ( (null x) 0)
(t (+ (car x) (suma (cdr x)))
)
)
)
(defun contar(x)
(cond ( (null x) 0)
(t (+ 1 (contar (cdr x)))
)
)
)
(defun media(x)
(setq a (suma x))
(setq b (contar x))
(/ a b)
)
3. Ejecución
Ejercicio # 3
1. Descripción
Crear unafunción en LISP que permita la suma de matrices.
2. Solución
Para el presente ejercicio realizamos dos funciones:
La primera función realiza la suma de dos listas. Donde valida que sean listas, caso contrario despliega el mensaje “No hay lista” mediante el uso de la función cond y además mediante el uso de la función listp que devuelve T si es verdadero y NIL si es falso.
La segundafunción realiza la suma de la matriz mediante el uso de la función antes creada y usando recursividad.
(defun suma2listas(x y)
(cond ( (not (listp x)) (list "no hay lista" ) )
( (not (listp y)) (list "no hay lista" ) )
( (null x) y) ( (null y) x)
(t (CONS (+ (car x) (car y)) (suma2listas (cdr x) (cdr y))))
)
)
(defun sumamatriz (x y)
(print (suma2listas (car x) (car y)))
(if (cdr x)(sumamatriz (cdr x) (cdr y))) "Matriz Sumada")
3. Ejecución
Ejercicio # 4
1. Descripción
Crear una función en LISP que permita sumar los pares de una lista
2. Solución
Definimos la función spares donde sumamos los pares usando la función mapcar, y luego mediante la función if comprobamos si la lista ya terminó, en cuyo caso se muestra el mensaje “Pares sumados”, o caso contrariovuelve a llamar a la función spares para volver a realizar el proceso.
(defun spares (a)
(print (mapcar #'+ (car a) (cadr a)))
(if (cddr a) (spares (cddr a)) "Pares sumados")
)
3. Ejecución
Laboratorio Nº2
Ejercicio # 1
4. Descripción
Escribir una función que tome como argumento una lista y devuelva otra con los elementos impares.
5. Solución
Para el presente ejerciciorealizamos dos funciones:
La primera función llamada auxim, recibe una lista y va agregando en la variable res1 el primer elemento de la lista y los demás elementos impares mediante la utilización de la función recursiva auxim y la función cddr.
La segunda función llamada impares, recibe la lista y la envía al la función auxim, además de crear la variable res1.
(defun auxim(lista)
(setq res1(append res1 (list (car lista))))
(if(cdr lista)
(auxim(cddr lista) )
(print res1)
)
)
(defun impares(lista)
(setq res1 '())
(auxim lista)
)
6. Ejecución
Ejercicio # 2
4. Descripción
Escribir una función que obtenga el número mayor de una lista y si algún elemento no es un número que no lo tenga en cuenta.
5. Solución
Para el presente ejercicio declaramos la variable w...
Regístrate para leer el documento completo.