Solución

@eltamales
·hace 4dTypeScript
solution.tsTypeScript
export function calculateTaxiFare(distancia: number, hora: number, pasajeros: number): number {
  let tarifa = 0;

  // Verfica la hora del transporte
  tarifa = calculateNightSurcharge(distancia, hora);

  // Se suma una cantidad x por cada pasajero extra
  tarifa = calculateExtraPassangerSurcharge(tarifa, pasajeros);

  // Se verifica si la tarifa esta por debajo del minimo (para cobrarle mas)
  tarifa = calculateMinimumFare(tarifa);

  return tarifa;
}

function calculateNightSurcharge(distancia: number, hora: number): number {
  const HORA_MINIMA = 22;
  const HORA_MAXIMA = 6;

  const TARIFA_BASE = 2.50;
  const TARIFA_X_KM = 1.20;
  const MULTIPLICADOR_NOCTURNO = 1.5;

  let tarifa = 0;

  if(hora >= HORA_MINIMA || hora < HORA_MAXIMA) {
    // Aplicar recargo nocturno al costo por kilometro
    tarifa = TARIFA_BASE + distancia * TARIFA_X_KM * MULTIPLICADOR_NOCTURNO;
  } else {
    tarifa = TARIFA_BASE + distancia * TARIFA_X_KM;
  }
  return tarifa;
}

function calculateExtraPassangerSurcharge(tarifa: number, pasajeros:number): number {
  const PASAJEROS_MAXIMOS = 4;
  const MULTIPLICADOR_X_PASAJERO = 0.30;

  // Verificar si hay pasajeros extra y sumar cargo
  if(pasajeros > PASAJEROS_MAXIMOS) {
    tarifa += (pasajeros - PASAJEROS_MAXIMOS) * MULTIPLICADOR_X_PASAJERO;
  }

  return tarifa;
}

function calculateMinimumFare(tarifa: number): number {
  const TARIFA_MINIMA = 5.00;
  
  // Aplicar tarifa mínima
  if(tarifa < TARIFA_MINIMA) {
    tarifa = TARIFA_MINIMA;
  }

  return tarifa;
}
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