Solución

@alexiis-dev·30/5/2026TypeScript
solution.tsTypeScript
const DEFAULT = -1
const MIN_PASSENGER = 0
const MIN_DISTANCE = 100

const EC_RATE = 0.10
const EXTRA_EC_RATE = 30
const BS_RATE = 0.25
const FS_RATE = 0.45

const GRUPAL_DISCOUNT = 0.10
const MIN_PASSENGERS_DISCOUNT = 5


type ClassTravel = 'economy' | 'business' | 'first'

function getGrossTotalByClassTravel(classTravel: ClassTravel, distance: number, passanger: number, wallet: boolean){
  switch(classTravel){
    case 'economy':  
      let base = distance * EC_RATE * passanger
      return wallet ? base += EXTRA_EC_RATE * passanger : base
    case 'business': return distance * BS_RATE * passanger
    default: return distance * FS_RATE * passanger
  }
}
export function calculateFlightTicketPrice(passanger: number, classTravel: ClassTravel, distance: number, wallet: boolean): number {
  // Verificar si los pasajeros son válidos
  if (passanger <= MIN_PASSENGER) return DEFAULT;

  // Verificar si la distancia mínima es válida
  if (distance < MIN_DISTANCE) return DEFAULT;

  // Obtenemos el total bruto
  let grossTotal = getGrossTotalByClassTravel(classTravel, distance, passanger, wallet)

  // Aplicar descuento grupal si hay 5 o más pasajeros
  if (passanger >= MIN_PASSENGERS_DISCOUNT)grossTotal -=  grossTotal * GRUPAL_DISCOUNT;
  
  return +grossTotal.toFixed(1);
}
0respuestas
Respuestas

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.