Vous êtes sur la page 1sur 5

Resolver los siguientes ejercicios

Construir los siguientes programas en Prolog


1.

Armar una base de datos con la siguiente informacin sobre los vuelos de una
aerolnea, el predicado puede ser es_vuelo, por ejemplo:
es_vuelo(buenos_aires, crdoba).
Ciudad de origen

Ciudad de destino

Buenos Aires
Buenos Aires
Buenos Aires
Crdoba
Crdoba
Crdoba
San Juan
San Juan
San Juan
Mendoza
Santa Rosa

Crdoba
Santa Rosa
San Juan
Santa Fe
Tucumn
Santa Rosa
Tucumn
Mendoza
Neuqun
Tucumn
San Juan

2.

Usando la base de vuelos, expresar las siguientes preguntas como consultas


Prolog:

a)
b)
c)
d)

e)

Tengo algn vuelo de Crdoba a Santa Rosa?


es_vuelo(cordoba,santa_rosa).
true.
Existe un vuelo desde Santa Fe hasta Neuqun?
es_vuelo(santa_fe,neuquen).
false.
Existe un vuelo desde Tucumn hasta San Juan?
es_vuelo(tucuman,san_juan).
false.
Hacia que ciudades van los vuelos que parten de Crdoba?
es_vuelo(cordoba,X).
X = santa_fe ;
X = tucuman ;
X = santa_rosa.
De donde provienen los vuelos que llegan a San Juan?
es_vuelo(X,san_juan).
X = buenos_aires ;
X = santa_rosa.

3.

Con la base de vuelos, contestar las siguientes preguntas:

a)

Existe algn vuelo desde Santa Rosa a Mendoza pasando por San Juan?
es_vuelo(santa_rosa,san_juan),es_vuelo(san_juan,mendoza).
true.
b)
Existe algn vuelo desde Buenos Aires a San Juan pasando por alguna otra ciudad?
es_vuelo(buenos_aires,X),es_vuelo(X,san_juan).
X = santa_rosa ;
c)
Por qu ciudad intermedia pasa un vuelo que parte de Buenos Aires y llega a Santa
Fe?
es_vuelo(buenos_aires,X),es_vuelo(X,santa_fe).
X = cordoba ;
d)
Por cules dos ciudades intermedias pasa un vuelo que salga de Crdoba y llega a
Mendoza?
es_vuelo(cordoba,X),es_vuelo(X,Y),es_vuelo(Y,mendoza).
X = santa_rosa,
Y = san_juan.
4.

Suponer que se tiene la siguiente base de datos con informacin sobre la jerarqua
militar de un pas hipottico:
tiene_rango(bush, coronel).
tiene_rango(komehini, soldado).
tiene_rango(kadafi, soldado).
tiene_rango(fujimori, soldado).
tiene_rango(gonzalez, capitan).
tiene_rango(gorbachov, general).
tiene_rango(chirac, cabo).
tiene_rango(hussein, sargento).
tiene_rango(ford, teniente).
tiene_rango(arafat, mayor).
es_jefe_de(general, coronel).
es_jefe_de(coronel, mayor).
es_jefe_de(mayor, capitn).
es_jefe_de(capitn, teniente).
es_jefe_de(teniente, sargento).
es_jefe_de(sargento, cabo).
es_jefe_de(cabo, soldado).
Traducir las siguientes consultas al espaol, e indicar cules seran las respuestas del
sistema en cada caso sin usar la computadora:

a)

?-es_jefe_de(teniente, X), es_jefe_de(X, Y).


El teniente es jefe de y este a su vez es jefe de?
X = sargento, Y = cabo.

b)

?-es_jefe_de(X, Y), tiene_rango(hussein, X), tiene_rango(Z,Y).


Averiguar el rango de Hussein, de quien es jefe y el rango de este.
X = sargento, Y = cabo, Z = chirac ;

c)

?-tiene_rango(bush,X); tiene_rango(arafat, X).


Cules son los rangos de Bush o arafat?
X = coronel; X = mayor.

d)

?-tiene_rango(X,Y), es_jefe_de(mayor,Y).
Cul es la persona y el rango de esta, si tiene como jefe a un mayor?
False;

e)

?-es_jefe_de(X, sargento), not(tiene_rango(kadafi, X)).


Qu rango tiene la persona q es jefe del sargento? No debe ser el rango que tiene
kadafi
X = teniente.
(Not es un predicado autoconstruido del lenguaje que es verdadero cuando su argumento
es un predicado falso y viceversa).
Escribir en Prolog las siguientes consultas:

a)
b)
c)

5.

Qu rango tiene el jefe de Gonzlez?


tiene_rango(gonzalez,X),es_jefe_de(Y,X),tiene_rango(Z,Y).
Es Chirac jefe de Hussein?
tiene_rango(chirac,y),es_jefe_de(y,z),tiene_rango(hussein,z).
false
Quin o quienes dependen directamente de Chirac?
tiene_rango(chirac,X),tiene_rango(Z,Y),es_jefe_de(X,Y).
X = cabo,Z = komehini,Y = soldado ;
X = cabo,Z = kadafi,Y = soldado ;
X = cabo,Z = fujimori,Y = soldado ;
Reescribir la base de vuelos incluyendo el tiempo de viaje, de acuerdo con la siguiente
tabla:
Ciudad de origen

Ciudad de destino

Duracin (min)

Buenos Aires
Buenos Aires
Buenos Aires
Crdoba
Crdoba
Crdoba
San Juan
San Juan
San Juan
Mendoza
Santa Rosa

Crdoba
Santa Rosa
San Juan
Santa Fe
Tucumn
Santa Rosa
Tucumn
Mendoza
Neuqun
Tucumn
San Juan

80
70
120
40
60
75
85
15
100
95
80

Usar un predicado ternario, por ejemplo:


vuelo(buenos_aires, cordoba, 80).

Efectuar las siguientes consultas:


a)

Cunto se tarda para ir desde Crdoba hasta Tucumn?


vuelo(crdoba,tucumn,X).
X = 60
b)
Cunto se tarda para ir desde Buenos Aires hasta Santa Fe pasando por Crdoba?
vuelo(buenos_aires,crdoba,X),vuelo(crdoba,santa_fe,Y).
X = 80,
Y = 40.
c)
Cunto se tarda para ir desde Buenos Aires hasta San Juan pasando por Crdoba y
Santa Rosa?
vuelo(buenos_aires,crdoba,X),vuelo(crdoba,santa_rosa,Y),vuelo(santa_rosa,san_juan,Z).

X = 80,
Y = 75,
Z = 80.
d)

e)

f)

Saliendo desde Buenos Aires, a qu ciudades se puede llegar en menos de 90


minutos?
vuelo(buenos_aires,X,Y),Y<90.
X = crdoba,Y = 80 ;
X = santa_rosa,Y = 70 ;
Cules son los vuelos de ms de una hora de duracin?
vuelo(X,Y,Z),Z>60.
X = buenos_aires,Y = crdoba,Z = 80 ;
X = buenos_aires,Y = santa_rosa,Z = 70 ;
X = buenos_aires,Y = san_juan,Z = 120 ;
X = crdoba,Y = santa_rosa,Z = 75 ;
X = san_juan,Y = tucumn,Z = 85 ;
X = san_juan,Y = neuqun,Z = 100 ;
X = mendoza,Y = tucumn,Z = 95 ;
X = santa_rosa,Y = san_juan,Z = 80.
Cul es la diferencia de tiempo entre el vuelo directo de Buenos Aires a San Juan y el
que pasa por Santa Rosa?
vuelo(buenos_aires,san_juan,X),vuelo(buenos_aires,santa_rosa,Y),vuelo(santa_ros
a,san_juan,Z),Q=Y+Z-X.
X = 120,
Y = 70,
Z = 80,
Q = 70+80-120

6.

Armar una base con la siguiente informacin alimentaria: una racin de pollo tiene 270
caloras, un flan 190 y una de buen asado 380. Hoy me propongo no almorzar mas de 580
caloras. Obtener respuestas a las siguientes preguntas usando consultas:
calorias(racion_pollo,270).
calorias(flan,190).
calorias(asado,380).
a) Cuntos flanes me puedo comer?
b) Puedo comer el asado y el pollo?
calorias(asado,X), calorias(pollo,Y),M=(X+Y),M.

c) Si me como el pollo y el flan, cuntas caloras, menos que las mximas ingiero?
d) Cuntas caloras ingiero si me como el pollo y dos flanes?

Vous aimerez peut-être aussi