miércoles, 4 de enero de 2012

Ejercicios LISP (Parte 2)
Ejercicio # 1

1.      Descripción
Defina una función “nesimo” que dado un entero “n” y una lista “L” retorne una nueva lista eliminando el n-ésimo elemento de la lista.

$ (nesimo 3 '(1 -3 5 4 9))
(1 -3 4 9)

2.      Solución

Ø  (defun enesimo (l n)
          (setq Cont 0) //declaro el contador
          (setq Res '()) //declare variable de almacenamiento de respuesta
          (ejer l n) //llamo al otro procedimiento
          (print res)  //imprimo la respuesta
          )

Ø  (defun ejer (l n)
           (setq cont (+ cont 1)) // incremento el contador
           (if (/= cont n) //evalúo si me encuentro en la posición a descartar
           (setq res (append res (list (car l)))) //construyo la lista resultante
           )
          (if (cdr l)
          (ejer (cdr l) n) //regreso al método en caso de tener más datos en la lista
          )
         )

3.      Ejecución
Ejercicio # 2

1.      Descripción

Defina una función “MULTCICL”, tal que dado un entero positivo “n” y una lista “L” retorna una nueva lista multiplicando cada elemento por n, n-1, n-2, …

$ (multcicl 3 '(1 2 3 4 5))

2.      Solución
      
       Ø  (defun multcicl (n l)
           (setq aux (+ 1 n))
           (setq res '())
           (oper n l)
           (print res)
           )

       Ø  (defun oper (n l)
           (setq aux (- aux 1))
           (setq res (append res (list  (* aux (car l))) ) )
           (if (cdr l)
           (oper n (cdr l))
           ) )

3.      Ejecución

No hay comentarios:

Publicar un comentario