Solución
JL@juanluisabreu_4c541ef6
·2/4/2026TypeScriptsolution.tsTypeScript
function getBaseRate(clase: string)
{
const ECONOMY_CLASS = "economy";
const BUSINESS_CLASS = "business";
const ECONOMY_RATE = 0.10;
const BUSINESS_RATE = 0.25;
const FIRST_CLASS_RATE = 0.45;
return clase == ECONOMY_CLASS? ECONOMY_RATE:
clase == BUSINESS_CLASS? BUSINESS_RATE: FIRST_CLASS_RATE;
}
function calculateLuggageFee(pasajeros: number, clase: string, tieneEquipaje: boolean )
{
const ECONOMY_CLASS = "economy";
const LUGGAGE_FEE = 30;
const DEFAULT_FEE = 0;
return clase==ECONOMY_CLASS && tieneEquipaje? LUGGAGE_FEE*pasajeros: DEFAULT_FEE;
}
export function calculateFlightTicketPrice(pasajeros: number, clase: string, distancia: number, tieneEquipaje: boolean): number {
const DEFAULT_VALUE_INVALID_INPUT = -1;
const MININUM_GROUP_QUANTITY = 5;
const MININUM_GROUP_DISCOUNT_RATE = 0.10;
const MINIMUM_DISTANCE = 100;
const MINIMUM_PASSANGER = 0;
const PORCENTAJE_DIVISOR = 100;
let total = 0;
// Verificar si los pasajeros son válidos
if (pasajeros <= MINIMUM_PASSANGER) return DEFAULT_VALUE_INVALID_INPUT;
// Verificar si la distancia mínima es válida
if (distancia < MINIMUM_DISTANCE) return DEFAULT_VALUE_INVALID_INPUT;
total = distancia * getBaseRate(clase) * pasajeros;
total = total + calculateLuggageFee(pasajeros, clase, tieneEquipaje);
// // Calcular precio base y equipaje según la clase de vuelo
if (pasajeros >= MININUM_GROUP_QUANTITY) {
total = total - total * MININUM_GROUP_DISCOUNT_RATE;
}
return Math.round(total * PORCENTAJE_DIVISOR) / PORCENTAJE_DIVISOR;
}0respuestas