Solución

JL@juanluisabreu_4c541ef6
·2/4/2026TypeScript
solution.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
Respuestas
0

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.
Markdown