Nothing Special   »   [go: up one dir, main page]

Tarea2inteligencia Artificial

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 4

Inteligencia Artificial.

Alumna: Estefania Rodriguez Sánchez.

Matricula: A21000654.

Facilitadora: María del Carmen Aburto Castañeda.

Carrera: Ingeniería en sistemas computacionales.

Tarea2: Práctica de programación en Common Lisp.

Fecha:03 de mayo del 2024.


Práctica 1a
Funciones de listas y matemáticas en Common Lisp

Introducción
Common Lisp (List processing) es un lenguaje funcional que utiliza una notación prefija. Es un lenguaje
muy poderoso para el manejo de expresiones simbólicas. Sus elementos básicos son: átomos, listas y
cadenas de caracteres. En nuestro curso usamos un intérprete de Common Lisp que utiliza el lazo repetitivo
lee-evalúa-imprime. Common Lisp tiene interconstruidas una gran cantidad de funciones matemáticas,
lógicas, predicados, para el manejo de listas, etc. Es un lenguaje no tipado por lo que no es necesario
declarar variables ni tipos antes de usarse. Su principal inconveniente es su exagerado uso de paréntesis,
pero es algo a lo que sus fans llegan a acostumbrarse.

Objetivo
Utilizar las funciones propias de Common Lisp para la manipulación de listas y para el manejo de
operaciones matemáticas, aprendiendo el manejo de la notación prefija.

Actividades
1.- Suponiendo la siguiente definición:

(setq milista '((bush iraq) (nixon watergate) (lopez_obrador complot) (pri pemex_gate) (pan amigos_de_fox) (ver tele) (no
correo_electronico por_favor) (va mexico mundial)))

y basándose en las funciones de Clisp para la manipulación de listas, define y prueba las funciones
necesarias para generar las siguientes listas:

1.1.- (bush nixon lopez_obrador)


Función definida:
(setq ej1 (append(list (nth 0 x1) (nth 0 x2) (nth 0 x3 ) ) ) )

1.2.- (pemex_gate no)


Función definida:
(setq ej1 (append(list (nth 1 x4) (nth 0 x7) ) ) )

1.3.- (no ver tele por_favor)


Función definida:
(setq ej1(append(list (nth 0 x7) (nth 0 x6) (nth 1 x6) (nth 2 x7) ) ) )

1.4.- (iraq watergate complot pemex_gate amigos_de_fox)


Función definida:
(setq ej1(append (list (nth 1 x1) (nth 1 x2) (nth 1 x3) (nth 1 x4) (nth 1 x5) ) ) )

1.5.- (mexico no iraq)


Función definida:
(setq ej1 (append(list (nth 1 x8) (nth 0 x7) (nth 1 x1) ) ) )

1.6.- (correo_electronico pri pan)


Función definida:
(setq ej1 (append (list ( nth 1 x7) (nth 0 x4) (nth 0 x5) ) ) )

2.- Tomando cómo ejemplo el siguiente código que calcula el área y perímetro de un círculo:

(defun area-perimetro ()
(princ “teclea el radio, por favor: “)
(setq radio (read))
(setq perimetro (* 2 pi radio))
(setq area (* pi radio radio))
(format t “Radio: ~5F. Perimetro: ~5F. Area: ~5F” radio perimetro area)
)

2.1.- Define una función que pida los valores de a, b y c, evalúe y despliegue el resultado de la siguiente
función:

f = (b2 – 4ac)1/2
(defun ejercicio ()
(princ “Ingresa el valor de a: “)
(setq a (read))
(princ “Ingresa el valor de b: “)
(setq b (read))
(princ “Ingresa el valor de c: “)
(setq c (read))
(setq f (sqrt (- (expt b 2) (*4 a c))))
(princ f)
)

2.2.- Prueba la función para los siguientes valores:


i) a=1, b=2, c=3 Resultado: 2.828________________
ii) a=1, b=3, c=2 Resultado: 1________________
iii)a= 10, b=20, c=5 Resultado: 14.142________________
iv)a= 20, b=10, c=8 Resultado: 20________________

3.- Un palíndromo es una secuencia de caracteres que se leen igual al derecho que al revés. La función
PALINDROMEP siguiente verifica si una lista es un palíndromo.

(defun palindromop (lst)


(equal lst (reverse lst)) )

Por ejemplo:
>(palindromop '(1 2 3 4 5 4 3 2 1))
T
>(palindromop '(a b b a))
T
>(palindromop '(1 2 3))
NIL

Escribe una versión recursiva de esta función y llámala R-PALINDROMOP sin usar la función reverse.
(Inserta aquí el código de R-PALINDROMOP)

> (defun miembro (obj lst)


(if (null lst)
nil
(if (eql (car lst) obj)
lst
(miembro obj (cdr lst)))))
MIEMBRO
4.- Comentarios y conclusiones

La instalación del programa Common List es muy fácil y rápida de instalar no se me complico y la gran
ventaja es que el programa es compatible con cualquier sistema operativo por lo que se facilita su
instalación, Y para poder resolver mi actividad vi varios videos sobre sus funciones. Ya que este programa
no lo conocía y gracias a los videos pude manipular y ejecutar sin ningún inconveniente el programa
Common List.

Referencias
Franco, B. (30 de octubre de 2020). Ejercicios LISP - Paradigmas de Programacion [Vídeo]. YouTube. .
Obtenido de https://www.youtube.com/watch?v=JcCOIOJ6SP8

Javier, B. (7 de abril de 2015). Introducción a LISP 2/2 [Vídeo]. YouTube. . Obtenido de


https://www.youtube.com/watch?v=Fz9Rig9lG50
Universidad, U. (10 de abril de 2021). COMMON LISP (Lenguaje de programación). Obtenido de
https://vocabularis.crai.ub.edu/es/thub/concept/thub:981058507552906706

También podría gustarte