Upload
pamelanet43037
View
1.306
Download
3
Embed Size (px)
Citation preview
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
(Universidad del Perú, DECANA DE AMÉRICA)
FACULTAD DE INGENIERIA DE SISTEMAS E INFORMARTICA
Curso : Inteligencia Artificial
Profesor : Vega Huerta, Hugo
Alumno : Pacheco Núñez, Raúl
Castillo Martínez, Pamela
Mariluz Gonzales, Richard
Semestre : 2010 - II
Ciudad Universitaria, 22 de Septiembre del 2010
LISP TUTORIAL (SOLUCIONARIO)
EJERCICIO N°1
Operaciones aritméticas usando LISP
1+ 2∗53∗8
+3 (2−3 )∗52
20/5+
(10∗5 )∗52
1+9
1+ 1024
+−754
+ 125010
3424
+2500−37520
1712
+ 4254
=17+127512
=129212
=3234
Solución en LISP
EJERCICIO N°2
a+bc∗d
=1+23∗5
=15
Solución en LISP
EJERCICIO N°3
Ejemplos usando listas
(A BC ) ((D E ) A (C F )) (¿102030)
Máximo de una lista de números
Mínimo de una lista de números
Raíz de una ecuación usando la primitiva sqrt
√12*3√4+12
En LISP
CONS: Constructor de un par ordenado. Puede construir listas.
Construcción de listas usando comilla y función cons
LIST: Construye listas de forma más 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 símbolo es idéntico a otro.
(Eq sımbolo-1 sımbolo-2)
Devuelve T si el valor del primer parámetro es igual al valor del Segundo parametro
Devuelve nil si los valores de los parámetros ingresados son distintos
EQUAL: devuelve T si son iguales, pero no en valores, sino son iguales en símbolos
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
Función definida como ORDEN la cual busca el mayor de 3 números 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