Buenas, a ver si alguien me puede dar una mano con estos dos q no me salen:
Una agencia de viajes lleva un registro con todos los vuelos que maneja de la siguiente manera:
vuelo(Codigo de vuelo, capacidad en toneladas, [lista de destinos] ).
Esta lista de destinos está compuesta de la siguiente manera:
escala(ciudad, tiempo de espera)
tramo(tiempo en vuelo)
Siempre se comienza de una ciudad (escala) y se termina en otra (no puede terminar en el aire al vuelo),
con tiempo de vuelo entre medio de las ciudades. Considerar que los viajes son de ida y de vuelta por la misma ruta.
vuelo(ARG845, 30, [escala(rosario,0), tramo(2), escala(buenosAires,0)]).
vuelo(BLE849, 175, [escala(paris,0), tramo(2), escala(berlin,1), tramo(3),
escala(kiev,2), tramo(2), escala(moscu,4), tramo(5), escala(seul,2), tramo(3),
escala(tokyo,0)])...
1)distanciaEnEscalas/3: Relaciona dos ciudades que son escalas del mismo vuelo y la cantidad de
escalas entre las mismas; si no hay escalas intermedias la distancia es 1. P.ej. París y Berlín están
a distancia 1 (por el vuelo BLE849), Berlín y Seúl están a distancia 3 (por el mismo vuelo). No
importa de qué vuelo, lo que tiene que pasar es que haya algún vuelo que tenga como escalas a
ambas ciudades. Consejo: usar nth1.
2)vueloLento/1: Un vuelo es lento si no es largo, y además cada escala es aburrida.
Previamente hice las funciones vueloLatgo/1 y escala aburrida/2(recibe vuelo y escala y me dice si es aburrida o no). Lo q hice de los dos puntos es lo siguiente:
distanciaEnEscalas(Ciudad1,Ciudad2,Distancia):-
vuelo(_,_,Lista),
member(escala(Ciudad1,_),Lista),
member(escala(Ciudad2,_),Lista),
nth1(Ind2,Lista,Ciudad2),
nth1(Ind1,Lista,Ciudad1),
Distancia is (abs(Ind2 - Ind1)).
vueloLento(Vuelo):-
vuelo(Vuelo,_,_),
not(vueloLargo(Vuelo)),
not((not(escalaAburrida(Vuelo,escala(_,_))))).
el enunciado completo esta acá igual:
http://pdep.com.ar/material/guas-de-ejercicios
Si hay alguien q lo sepa.. Graciasss!