Laboratorio 5: PROLOG (2)

Ejercicios:

 

1. Implementar la función filter en prolog y mostrar ejemplos de su uso.

2. Define versiones recursivas de los siguientes predicados sobre
listas:



primero(X,XYs) X es el primer elemento de XYs
ultimo(X,YsX) X es el último elemento de YsX
iesimo(i,AsXiBs) Xi es el iésimo elemento de AsXiBs
noesta(X,Ys) X no es elemento de Ys

todos iguales(Xs) todos los elementos de Xs son iguales entre sí
todos distintos(Xs) todos los elementos de Xs son distintos entre sí

3. Se desea representar las matrices en Prolog mediante listas de
listas de números, de manera que la lista i-ésima de números corresponda a
la fila i-ésima de la matriz. Por ejemplo, la matriz de 3x3:

1 2 3
4 5 6
7 8 9


se representará mediante la lista de listas:
[ [1,2,3], [4,5,6], [7,8,9] ]

Define los siguientes predicados sobre matrices:


lee(M,I,J,Xij) Xij es el elemento i,j de M
escribe(M,I,J,Xij,MXij) MXij es M con el elemento i,j reemplazado por Xij
fila(M,I,Mi) Mi es la fila i-ésima de M
columna(M,J,Mj) Mi es la columna j-ésima de M
suma(A,B,C) C es la suma de A y B
traspuesta(M,T) T es la traspuesta de M (OPCIONAL)

[OPCIONAL] 4. Dada la siguiente representación de árbol binario:


empty
tree(dato1,empty,empty)
tree(dato1,tree(dato2,empty,empty),tree(dato3,empty,empty))
tree(dato4,empty,tree(dato5,tree(dato6,empty,empty),empty))


define los siguientes predicados sobre árboles binarios:



miembro(X,A) X es elemento de A
esta(X,A) X está en A
no_esta(X,A) X no está en A
num nodos(A,N) A tiene N nodos
profundidad(A,P) P es la profundidad de A
maximo(A,M) M es el máximo de A
suma(A,S) S es la suma de los nodos de A (OPCIONAL)

5. Dada una base de datos con las siguientes características: 
                                        vuelo(NRO,ORIGEN,DESTINO,HORA_P,HORA_LL,avion(MARCA,EDAD)) 

     Elabore reglas de inferencia para: 

        a.Indicar si hay vuelo directo entre dos ciudades. 
        b.Dada una ciudad, obtener la información de los vuelos que salen de ella. 
        c.Dado un vuelo, indicar la ciudad de partida y de llegada. 
        d.Dados un origen y un destino indicar sólo una ruta posible que tenga una escala.  (OPCIONAL)
        e.Indicar los pares de ciudades que están conectadas con vuelos en ambos sentidos.  (OPCIONAL)