12-06-2014, 21:10
Buenas noches Utnianos.
Vengo con un ejercicio de Paradigma Logico, que desde ayer estoy pensando que estoy haciendo mal y no me doy cuenta(seguro es una boludes, ojala), es el siguiente:
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)])...
Me pide: escalaAburrida/2 : Relaciona un vuelo con cada una de sus escalas aburridas; una escala es
aburrida si hay que esperar mas de 3 horas.
Llegue hasta aca:
escalaAburrida(Vuelo,TiempoEspera):- vuelo(Vuelo,_,X), buscarTiempoEspera(X,T), TiempoEspera is T.
buscarTiempoEspera([],0).
buscarTiempoEspera([escala(_,T1)|Xs],T):- T1 > 3 , T is T1,buscarTiempoEspera(Xs,T2).
buscarTiempoEspera([tramo(_)|Xs],T):- buscarTiempoEspera(Xs,T).
Y me da false todo, ya que despues sacandole la condicion de T1 > 3 me di cuenta que solo agarra las primeras escalas de cada Viaje y como todas son 0 me devuelve eso.
Que le tendria que agregar o cambiar para que me siga buscando dentro de cada Viaje.
Gracias!
Vengo con un ejercicio de Paradigma Logico, que desde ayer estoy pensando que estoy haciendo mal y no me doy cuenta(seguro es una boludes, ojala), es el siguiente:
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)])...
Me pide: escalaAburrida/2 : Relaciona un vuelo con cada una de sus escalas aburridas; una escala es
aburrida si hay que esperar mas de 3 horas.
Llegue hasta aca:
escalaAburrida(Vuelo,TiempoEspera):- vuelo(Vuelo,_,X), buscarTiempoEspera(X,T), TiempoEspera is T.
buscarTiempoEspera([],0).
buscarTiempoEspera([escala(_,T1)|Xs],T):- T1 > 3 , T is T1,buscarTiempoEspera(Xs,T2).
buscarTiempoEspera([tramo(_)|Xs],T):- buscarTiempoEspera(Xs,T).
Y me da false todo, ya que despues sacandole la condicion de T1 > 3 me di cuenta que solo agarra las primeras escalas de cada Viaje y como todas son 0 me devuelve eso.
Que le tendria que agregar o cambiar para que me siga buscando dentro de cada Viaje.
Gracias!