|Refactoriza: costo de envíoDifícil
Ejercicio00:00

¿Quieres un reto mayor?

Resuelve en 15:00

info

Importante: Para que se registre el resultado tienes que iniciar sesión.

Refactoriza: costo de envío

Difícil200 pts·Refactorización

Enunciado

Implementa la función calculateShippingCost que calcula el costo de envío de un paquete según su peso, distancia y zona de entrega.

Reglas de negocio:

ZonaRango típico (referencia)Precio base (por kg)Recargo (por km)
"local"< 50 km$2 / kg$0.10 / km
"regional"50 – 200 km$5 / kg$0.05 / km
"nacional"> 200 km$10 / kg$0.02 / km

La zona siempre llega como parámetro — no necesitas derivarla ni validarla desde la distancia.

  • Si el peso es igual o menor a 0, retorna -1
  • Si la distancia es igual o menor a 0, retorna -1
  • Si el peso supera los 20 kg, se aplica un 10% de descuento sobre el costo total
  • El resultado se redondea a 2 decimales

Comportamiento esperado

calculateShippingCost(5,  30,  "local")    // 13.00
calculateShippingCost(10, 100, "regional") // 55.00
calculateShippingCost(25, 200, "nacional") // 228.60
calculateShippingCost(30, 500, "nacional") // 279.00
calculateShippingCost(0,  50,  "local")    // -1
calculateShippingCost(5,  -10, "regional") // -1

Requisitos de calidad

  • Sin números mágicos — extrae precios, recargos, umbrales y el descuento como constantes con nombres descriptivos
  • Sin variables de una sola letra — usa nombres que expresen la intención
  • Constantes en UPPER_SNAKE_CASE
  • Al menos una función auxiliar
Restriccionesexpand_more
  • Dificultad: Difícil
  • Completa todos los test cases para obtener los 200 puntos.
  • No modificar la línea export al final del archivo.
  • Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.

Puedes usar System.out.println() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.

Inicia sesión para reaccionar
Inicia sesión para reaccionar
Refactoriza: costo de envío — Difícil | Coding Challenges · Coding Challenges