Ejercicio00:00
¿Quieres un reto mayor?
Resuelve en 20:00
info
Importante: Para que se registre el resultado tienes que iniciar sesión.
Refactoriza: precio de boleto de avión
Master400 pts·Refactorización
ruleRestricciones de Refactoring
- radio_button_uncheckedSin números mágicos
- radio_button_uncheckedSin variables de una sola letra
- radio_button_uncheckedDeclara constantes en UPPER_SNAKE_CASE
- radio_button_uncheckedExtrae al menos una función auxiliar
- radio_button_uncheckedElimina la cadena if-else para tipos de clase
- radio_button_uncheckedMáximo 40 líneas en la función principal
Enunciado
Contexto
Tienes una función que calcula el precio final de un boleto de avión según la clase, la distancia, la cantidad de pasajeros y si llevan equipaje. El código funciona, pero está lleno de problemas: números mágicos, variables de una sola letra, lógica duplicada y todo mezclado en una sola función gigante.
Tu tarea es refactorizarla aplicando el patrón Strategy (o polimorfismo), extrayendo constantes con nombres descriptivos y separando las responsabilidades en funciones auxiliares.
Reglas de negocio
- Si
passengers <= 0odistance < 100, retorna-1 - Precio base por kilómetro según la clase:
"economy"→0.10por km por pasajero"business"→0.25por km por pasajero"first"→0.45por km por pasajero
- Equipaje (
hasLuggage = true):"economy"cobra30por pasajero"business"y"first"incluyen el equipaje (sin cargo adicional)
- Si hay 5 o más pasajeros, aplica un 10% de descuento sobre el total
Firma de la función
function calculateFlightTicketPrice(
passengers: number,
flightClass: string,
distance: number,
hasLuggage: boolean
): number
Ejemplos
// 2 pasajeros, economy, 500 km, sin equipaje
calculateFlightTicketPrice(2, "economy", 500, false) // → 100
// 2 pasajeros, economy, 500 km, con equipaje
calculateFlightTicketPrice(2, "economy", 500, true) // → 160
// 1 pasajero, business, 800 km, sin equipaje
calculateFlightTicketPrice(1, "business", 800, false) // → 200
// 5 pasajeros, economy, 400 km, sin equipaje (descuento grupal)
calculateFlightTicketPrice(5, "economy", 400, false) // → 180
Restriccionesexpand_more
- Dificultad: Master
- Completa todos los test cases para obtener los 400 puntos.
- No modificar la línea
exportal final del archivo. - Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.
Puedes usar console.log() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.
Inicia sesión para reaccionar
Inicia sesión para reaccionar