------------------- # 1 ------------------- OBJETIVOS Que el alumno repase los conocimientos básicos del lenguaje de programación LISP, aprendidos en la asignatura de Paradigmas de Programación, con el fin de estar mejor capacitado para enfrentarse a las prácticas de Inteligencia Artificial ENTREGA El trabajo realizado será entregado ----------------------------- S I N P R O R R O G A ----------------------------- Las funciones realizadas deberán tener los nombres correspondientes a los ejemplos mostrados luego de cada ejercicio EJERCICIOS ----------- ________________________________________________________________ 1. Escribir una función que reciba una lista de números y retorne una lista de números sumándole su posición a cada numero de la lista. > (suma-posicion ’(1 3 7 -2)) > (2 5 10 2) ________________________________________________________________ 2. Escribir la función calcula-diferencia que recibe una lista de números y devuelve otra lista con la diferencia entre un número y su sucesor en la lista. (El último elemento no cuenta) > (calcula-diferencia ’(10 6 2 5 -4)) > (4 4 -3 9) ________________________________________________________________ 3. Escribir la función separar-parimpar que recibe una lista de números y retorna una lista con una sublista de los pares y otra sublista con los impares. > (separar-parimpar ‘(1 2 3 5 6 8 9 11 12)) > ((12 8 6 2) (11 9 5 3 1)) ________________________________________________________________ 4. Escribir la función cambiar-notacion que transforme una expresión con operaciones matemáticas escritas en notación funcional de LISP a su notación infija correspondiente. > (cambiar-notacion '(+ (* 7 4) (* 5 3) (- (/ 30 (* 2 3)) 1))) > ((7 * 4) + (5 * 3) + ((30 / (2 * 3)) - 1)) ________________________________________________________________ 5. Escribir una función que a partir de los elementos de una lista cree un conjunto de todos los posibles pares ordenados > (pares-ordenados '(a b c )) > ((A . B) (A . C) (B . A) (B . C) (C . A) (C . B)) ________________________________________________________________ 6. Dada la siguiente estructura (defstruct punto (valx 0) (valy 0)) Escribir una función que reciba como parámetros 2 puntos y calcule la distancia entre ellos. > (distancia-puntos (make-punto :valx 8 :valy 6) (make-punto)) > 10 ________________________________________________________________ 7. Escribir una función que convierta una lista de números en un vector de números con los mismos elementos. >(array-to-vector '(1 2 3 4 6 7)) > #(1 2 3 4 6 7) ________________________________________________________________ 8. Escribir una función que determine si una lista de números esta ordenada o no. >(is-ordenada '(1 3 5 7 10)) >T >(is-ordenada '(1 3 15 5 7)) > NIL >(is-ordenada '(15 11 3)) >T ________________________________________________________________ 9. Escribir la función que divida una lista en 2 partes iguales y retorne una lista con las 2 nuevas sublistas (Si la cantidad de elementos es impar la primera sublista deberá tener un elemento más). > (dividir-lista '(a b c d e)) > ((a b c) (d e)) > (dividir-lista '(1 2 3 4 5 6)) > ((1 2 3) (4 5 6)) ________________________________________________________________ 10. Escribir una función que a partir de una lista copie en un archivo “inversa.txt” la lista y la versión invertida de la misma. > (guardar-lista-invertida '(w x y z )) > nil
|