Está en la página 1de 10

UNIVERSIDAD NACIONAL MAYOR DE SAN

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

También podría gustarte