Tema

Practica 5, ejercicio 10 (tipo Parcial)

0 respuestas 3753 visitas

Hola a todos,

tengo una consulta respecto a especificacion, el problema radica en como crear una lista de listas de 2 elementos, aca pongo todos los datos

" Se asume conocido el tipo Aeropuerto, de tipo enumerado"

$$tipo \ FechaHora{$$
$$observador \ minutosTotales(f:FechaHora) : \ Int$$
"Devuelve la cantidad de minutos totales que pasaron desde el origen de los tiempos hasta la FechaHora indicada"
$$tipo \ Vuelo{$$
$$observador \ horaSalida(v: Vuelo):\ FechaHora$$
$$observador \ horaLLegada(v:Vuelo): \ FechaHora$$
$$observador \ precio (v:Vuelo) : \ Float$$
$$observador \ aeropOrigen(v:Vuelo):\ Aeropuerto$$
$$observador \ aeropLlegada (v:Vuelo):\ Aeropuerto$$
$$invariante \ horaSalida(v) <\ horaLlegada(v)$$
$$invariante \ precio(v)>0$$

y el problema que tengo es en el inciso c

"Dados un conjunto de vuelos y dos aeropuertos origen y destino, obtener una lista de listas de vuelos correspondiente a todas las posibilidades de ir del origen al destino via un vuelo directo o un vuelo con trasbordo (en este caso, el segundo avion debe salir al menos una hora despues de que arriba el primero) ordenada por costo total (de mas barato a mas caro) y sin repeticiones. Los vuelos directos se codifican como listas de un elementos y los vuelos con un trasbordo se codifican como listas de dos elementos. Asi, la lista \([ [{v}_{1}], [{v}_{2}, {v}_{3} ], [{v}_{2}, {v}_{4} ] ]\) representa que se puede utilizar el vuelo directo v1, o el vuelo v2 y luego el v3, o el vuelo v2 y luego el v4. "

el problema lo encaré poniendo que el resultado tendra los mismos elementos que la concatenacion de dos listas, la de vuelos directos, y la de vuelos trasbordos, pero el problema es como hago para que los vuelos trasbordos sean listas de 2 elementos. Pense en hacerla como lista de duplas [ [(vuelo, vuelo)]] y luego de alguna manera "aplanar" las duplas para que queden elementos sin dupla... pero no se como hacerlo... cualquier ayuda me viene bien, gracias!