Solución

@edied_ramos
·4/4/2026TypeScript
solution.tsTypeScript
function applyPassengersDiscound(passengers: number, ticketPrice: number): number {
  const MIN_PASSENGERS = 5, DISCOUNT_FACTOR = 0.90;
  return passengers < MIN_PASSENGERS ? ticketPrice : ticketPrice * DISCOUNT_FACTOR;
}

function applyFlightClassCost(flightClass: string, ticketPrice: number): number {
  const ECONOMY_RATE = 0.10, BUSSINESS_RATE = 0.25, FIRST_RATE = 0.45;
  const CLASS_RATE = { economy: ECONOMY_RATE, business: BUSSINESS_RATE, first: FIRST_RATE}
  return ticketPrice * CLASS_RATE[flightClass];
}

function applyLuggageCost(passengers: number, flightClass: string, hasLuggage: boolean, ticketPrice: number): number {
  const LUGGAGE_FEE = 30;
  return flightClass === "economy" && hasLuggage ? ticketPrice + passengers * LUGGAGE_FEE : ticketPrice;
}

function canCalculateTicketPrice(passengers: number, distance: number): boolean {
  const MIN_PASSENGERS = 1, MIN_DISTANCE = 100;
  return passengers >= MIN_PASSENGERS && distance >= MIN_DISTANCE;
}

export function calculateFlightTicketPrice(passengers: number, flightClass: string, distance: number, hasLuggage: boolean): number {
  const TOTAL_PERCENT = 100, NO_RESULT = -1;

  if (!canCalculateTicketPrice(passengers, distance)) return NO_RESULT;

  let ticketPrice = applyFlightClassCost(flightClass, distance * passengers);
  ticketPrice = applyLuggageCost(passengers, flightClass, hasLuggage, ticketPrice);
  ticketPrice = applyPassengersDiscound(passengers, ticketPrice);

  return Math.round(ticketPrice * TOTAL_PERCENT) / TOTAL_PERCENT;
}
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