Solución
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