• No se han encontrado resultados

PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL

N/A
N/A
Protected

Academic year: 2021

Share "PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL"

Copied!
5
0
0

Texto completo

(1)

PROGRAMACIÓN ORIENTADA A LA

INTELIGENCIA ARTIFICIAL

Ejercicios de programación en LISP y PROLOG

Angeles Manjarrés Riesco

Severino Fernández Galán

Jesús González Boticario

prog-ia@dia.uned.es

Dpto. Inteligencia Artificial.

E. T. Ingeniería Informática. UNED

Avda. Senda del Rey, s/n

28040 Madrid

(2)

EJERCICIOS DE PROGRAMACIÓN EN LISP

1. Ejercicios Básicos

1.1 Definir una función que calcule la entropía de un suceso aleatorio que representa k modos de realización de probabilidades P1, P2, P3, …, Pk, cuyo valor viene dado por la expresión:

H

=

p

i

log

p

K

i i=1

1.2 Definir una función que dados tres números X, Y y Z, devuelva una lista con los números ordenados por orden creciente.

1.3 Definir una función que devuelva verdadero (cualquier valor distinto de NIL) o falso (NIL) dependiendo de si el menor de sus argumentos sea par o impar. Resolverlo para dos argumentos y para un número variable de éstos.

1.4 Definir una función que concatene un número variable de listas (algunas pueden ser listas vacías) y átomos, comprobando qué argumentos son listas y cuáles son átomos. En el resultado de dicha concatenación se deben excluir las listas vacías.

1.5 Definir las funciones SUST1 y SUST2 que reciban como argumentos una lista de asociación y una expresión simbólica L. SUST1 debe sustituir en L los primeros elementos de las parejas de la lista de asociación por sus correspondientes segundos elementos; esta sustitución la hará de forma secuencias (una sustitución puede influir en le resultado de otra sustitución anterior). SUST2 opera de forma análoga pero todas las sustituciones en la lista L deben realizarse simultáneamente (no teniendo ninguna influencia el resultado de una sustitución en las sustituciones que se realicen posteriormente).

Ejemplo:

> (SUST1 ‘( (A B) (C D) (E F) (B K) (D L) ) ‘(A C E B D M)) (K L F K L M)

> (SUST2 ‘( (A B) (C D) (E F) (B K) (D L) ) ‘(A C E B D M)) (B D F K L M)

1.6 Definir una función recursiva AGRUPAR que reciba dos argumentos, compruebe cuál de ellos es un átomo y cuál una lista, y a continuación introduzca el átomo junto a los átomos iguales que hubiera en la lista o al final de la misma, en el caso de no encontrar semejantes. Por ejemplo:

> (AGRUPAR ‘(A A A B B B C C C) ‘B) (A A A B B B B C C C )

1.7 Definir una función APLANAR que reciba como argumento una expresión simbólica y elimine todos los paréntesis que aparezcan en esa expresión, devolviendo como resultado una lista con todos los átomos que aparezcan en el argumento, de tal forma que todos los átomos

(3)

numéricos aparezcan en primer lugar, ordenados y sin repeticiones, seguidos de los que sean literales, también sin repeticiones.

Ejemplo:

> (APLANAR ‘( (1 2 A) (9 (B C 4) ) ( ( ( ( 3 C ( 7 ) ) ) ) ) ) )

( 1 2 3 4 7 9 A B C)

1.8 Definir una macro MI-IF que reciba tres argumentos, siendo el tercero opcional; si el primero es cierto devuelve el segundo, si no devuelve el tercero o NIL si éste no existiera. 1.9 Definir una macro MI-DO que tenga exactamente la misma funcionalidad que la macro DO, pero que además de devolver el valor correspondiente cuando se cumpla la condición de finalización, devuelva un segundo valor que indique el número de iteraciones que se han realizado. No se deben utilizar las primitivas DO, DO*, DOLIST, DOTIMES.

1.10 Definir una matriz de 10 filas y 20 columnas, rellenarla, asignando a cada elemento el valor de la suma de su fila más su columna y obtener una lista de salida con los elementos de la diagonal.

2. Ejercicios avanzados

2.1 Un móvil es un tipo de escultura abstracta construida por elementos que pueden tener un movimiento relativo unos respecto a otros. Puede definirse un tipo particularmente simple de móvil de forma recursiva como, o bien un objeto suspendido en el aire, o bien una barra con un submóvil colgando de cada extremo. Si se asume que cada barra está suspendida de su punto medio, puede representarse un móvil como un árbol binario. Los objetos suspendidos ser representarán como números que corresponderán al peso de cada objeto. Los móviles más complejos se representarán como listas de tres elementos; el primero de ellos será un número igual al peso de la barra, y los otros dos representan submóviles unidos a los extremos de la barra.

Un móvil debe ser balanceado, es decir, los dos submóviles de los extremos de la barra deben tener el mismo peso. definir MOVILP, una función que determina si un móvil está o no balanceado. Devolverá NIL si no lo está y el peso total del móvil en caso contrario.

> (MOVILP '(6 (4 (2 1 1) 4) (2 5 (1 2 2))))

30

2.2 El juego de la vida es un juego de simulación que se desarrolla en una cuadrícula, de modo que en cada casilla pueda haber un organismo. Cada casilla se puede encontrar ocupada o vacía.

Dos organismos se consideran vecinos si sus casillas son contiguas en sentido horizontal, vertical o diagonal. Por tanto, cada casilla tiene ocho casillas vecinas.

Las reglas del juego son:

- En cada casilla vacía nace un nuevo organismo si dicha casilla tiene exactamente tres vecinos.

- Una casilla ocupada que tenga cero o un vecino muere por aislamiento. - Una casilla ocupada con cuatro o más vecinos muere por superpoblación.

(4)

- Una casilla ocupada con dos o tres vecinos sobrevive.

Todos los nacimientos y muertes ocurren simultáneamente y la aplicación de las leyes anteriores produce una nueva generación.

El juego continúa hasta que suceda uno de los siguientes hechos: - La generación actual es igual que la generación inicial.

- La generación actual es igual que dos generaciones anteriores. - Se ha alcanzado el número máximo de generaciones prefijado.

2.3 Escribir REINAS, una función que devuelva la solución al problema de las ocho reinas. Se trata de situar a ocho reinas en un tablero de ajedrez, de manera que ninguna de ellas sea atacada por otra, es decir, no puede haber dos reinas en la misma fila, columna o diagonal.

EJERCICIOS DE PROGRAMACIÓN EN PROLOG

3. Ejercicios básicos

3.1 Una agencia matrimonial guarda por cada uno de sus solicitantes una ficha acorde a los siguientes hechos:

hombre(n,t,c,e).

mujer(n,t,c,e).

donde

n

es el nombre del hombre o la mujer,

t

es su talla (grande, mediana,

pequeña),

c

es el color de su pelo (rubio, moreno, pelirrojo, castaño) y

e

es su

edad (joven, maduro, anciano).

gustos(n,m,l,d)

indica que a la persona

n

le gusta la música del tipo

m

(clásica, pop, jazz), la literatura del género

l

(aventuras, ciencia ficción,

detectives) y el deporte de la variedad

d

(tenis, natación, yoga).

busca(n,t,c,e)

expresa que la persona

n

busca una pareja de talla

t

con color de pelo

c

y

edad

e

.

Se considera que dos personas

x

e

y

, de diferentes sexos, son

compatibles si

x

es compatible con

y

e

y

es compatible con

x

. En primer lugar,

x

es compatible con

y

si

x

busca a alguien con las características físicas de

y

y

si los gustos de

x

e

y

en las áreas de música, deporte y literatura coinciden.

(5)

3.2 Defina predicados par(X) e impar(X) que determinen si un número natural es par o impar. Defina asimismo un predicado divide(X,Y,Z) que compute divisiones enteras utilizando la substracción repetida.

3.3 Escriba un predicado substituye(X,Y,Xs,Ys), donde Ys es la lista que resulta de substituir por Y todas las ocurrencias de X en la lista Xs. Idem para

permutacion_par(Xs,Ys) y permutacion_impar((Xs,Ys), donde Xs,Ys son listas.

4. Avanzados

4.1 Escriba dos versiones de un predicado que calcule derivadas de funciones de variable entera, de modo que una de ellas utilice cuts y la otra no.

4.2 Escriba un programa que determine quién de entre 3 jugadores de póquer tiene la mejor jugada.

4.3 Los vértices de un grafo se numeran de 0 a n. En una base de datos Prolog, a cada uno de los arcos del grafo corresponde un hecho arco(i,j), donde i es el origen y j el destino del arco. Diseñe un predicado que defina camino(X,Y,L), donde L es la lista que representa un camino sin ciclos que conduce del vértice x al y.

Referencias

Documento similar

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)