Está en la página 1de 10

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

2∗5 3 ( 2−3 )∗52 ( 10∗5 )∗52


1+ + +
3∗8 20/5 1+9

10 −75 1250
1+ + +
24 4 10

34 2500−375
+
24 20

17 425 17+ 1275 1292 323


+ = = =
12 4 12 12 4

Solución en LISP

EJERCICIO N°2

a+b 1+2 1
= = Solución en LISP
c∗d 3∗5 5
EJERCICIO N°3

Ejemplos usando listas

 ( A BC )
 ( ( D E ) A (C F))
 (¿ 10 20 30)

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

También podría gustarte