Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MARCOS
(Universidad del Per, DECANA DE AMRICA)
FACULTAD DE INGENIERIA DE SISTEMAS E INFORMARTICA
Curso : Inteligencia Artificial
Profesor : Vega Huerta, Hugo
Alumno : Pacheco Nez, Ral
Castillo Martnez, Pamela
Mariluz Gonzales, Richard
Semestre : 2010 - II
Ciudad Universitaria, 22 de Septiembre del 2010
LISP TUTORIAL (SOLUCIONARIO)
EJERCICIO N1
Operaciones aritmticas usando LISP
Solucin en LISP
EJERCICIO N2
Solucin en LISP
EJERCICIO N3
Ejemplos usando listas
Mximo de una lista de nmeros
Mnimo de una lista de nmeros
Raz de una ecuacin usando la primitiva sqrt
En LISP
CONS: Constructor de un par ordenado. Puede construir listas.
Construccin de listas usando comilla y funcin cons
LIST: Construye listas de forma ms sencilla que CONS.
APPEND: Concatena listas.
(Append lista-1 lista-2 lista-3. . .)
FIRST: Selecciona el primer elemento de un par ordenado (o lista).
(First lista)
REST: Selecciona el segundo elemento de un par ordenado (o la lista que sigue al primer
elemento de una lista).
Ejemplos
(Rest lista)
EQ: Detecta si el valor de un smbolo es idntico a otro.
(Eq smbolo-1 smbolo-2)
Devuelve T si el valor del primer parmetro es igual al valor del Segundo parametro
Devuelve nil si los valores de los parmetros ingresados son distintos
EQUAL: devuelve T si son iguales, pero no en valores, sino son iguales en smbolos
EJERCICIOS 2 TUTORIAL
ASIGNACION: SETQ
(setq x '(1 2 3 4 5)) => A x se le asigna la lista (1 2 3 4 5)
(setq z 4) => A z se le asigna el atomo o elemento 4
(setq y '(323 435 jojo 2 jiji)) => A y se le asigna ESA lista
PRIMER ELEMENTO: CAR
(car x) => 1
(car y) => 323
QUITA ELEMENTO DE UNA LISTA: CDR
(cdr x) => (2 3 4 5)
(cdr y) => (435 jojo 2 jiji)
IF SIMPLE
> (setq x '(5 2))
(5 2)
> (if (> (car x ) (car (cdr x ))) (list (car x )) (list (car (cdr x ))))
(5)
> (es (> 5 2)
[si SI] => (lista [muestra] 5)
[si NO] => (lista [muestra] 2))
IF ANIDADOS
Busqueda del Mayor en una lista de 3 elementos
> (setq x '(1 2 3))
(1 2 3)
> (if (> (car x) (car (cdr x)))
(if (> (car x) (car (cdr (cdr x))))
(list (car x))
(list (car (cdr (cdr x)))))
(if (> (car (cdr x)) (car (cdr (cdr x))))
(list (car (cdr x)))
(list (car (cdr (cdr x)))))
)
(3)
> (es (> 1 2)
[si SI] => (es (> 1 3)
[si SI] => (listo [muestro] 1)
[si NO] => (listo [muestro] 3) )
[si NO] => (es (> 2 3)
[si SI] => (listo [muestro] 2)
[si NO] => (listo [muestro] 3) )
)
IF ANIDADOS DENTRO DE UNA FUNCION
Funcin definida como ORDEN la cual busca el mayor de 3 nmeros pertenecientes a una lista.-
> (defun orden(x)
(cond
( (not (numberp (car x))) (list "Primer elemento no numero" ) )
( (not (numberp (car (cdr x)))) (list "Segundo elemento no numero" ) )
( (not (numberp (car (cdr (cdr x))))) (list "Tercer elemento no numero" ) )
(t (if (> (car x) (car (cdr x)))
(if (> (car x) (car (cdr (cdr x)))) (list (car x))
(list (car (cdr x))))
(if (> (car (cdr x)) (car (cdr (cdr x))))
(list (car (cdr x)))
(list (car (cdr (cdr x)))))
))
))
ORDEN
> (orden '(1 2 3))
(3)
> (orden '(2 1 2)) | !!! ERROR !!!
(1) |
FUNCIONES
Suma el primer y ltimo elemento de una lista, usando CAR para obtener el primer elemento y CAR de LAST
para el ultimo.-
> (defun suma(x)
(cond
( (not (listp x)) (list 'Error))
(t (+ (car x) (car (last x))))
))
SUMA
> (setq x '(1 2 3 4 5 6 7 8 9))
(1 2 3 4 5 6 7 8 9)
> (suma x)
10