Limite de Velocidad - FreeCodeCamp #127 Daily Challenge
2 min
Enunciado
Dada una velocidad en millas por hora (MPH) y un límite en kilómetros por hora (KPH):
- Si tu velocidad (convertida a KPH) es menor o igual al límite, devuelve “Not Speeding”.
- Si excedes el límite por hasta 5 KPH, devuelve “Warning”.
- Si excedes el límite por más de 5 KPH, devuelve “Ticket”.
Dato útil: milla = kilómetros.
🔍 Análisis Inicial
Antes de programar, aclaremos el flujo de decisión:
flowchart TD
A["Velocidad en MPH"] --> B["Convertir a KPH"]
B --> C{"¿speedKPH ≤ límite?"}
C -- Sí --> D["Not Speeding"]
C -- No --> E{"¿≤ límite + 5?"}
E -- Sí --> F["Warning"]
E -- No --> G["Ticket"]
Casos de Prueba Clave
- Caso 1: Velocidad dentro del límite
- Entrada: speedMph = 30, speedLimitKph = 70
- Salida Esperada: “Not Speeding”
- Caso 2: Velocidad con advertencia
- Entrada: speedMph = 40, speedLimitKph = 60
- Salida Esperada: “Warning”
- Caso 3: Velocidad justo en el límite de advertencia
- Entrada: speedMph = 40, speedLimitKph = 65
- Salida Esperada: “Not Speeding”
- Caso 4: Velocidad con multa
- Entrada: speedMph = 60, speedLimitKph = 90
- Salida Esperada: “Ticket”
- Caso 5: Velocidad con advertencia cerca del límite
- Entrada: speedMph = 65, speedLimitKph = 100
- Salida Esperada: “Warning”
- Caso 6: Velocidad muy por encima del límite
- Entrada: speedMph = 88, speedLimitKph = 40
- Salida Esperada: “Ticket”
🛠️ Desarrollo de la Solución
Estrategia
Convertir unidades:
Comparar con el límite:
- Si → “Not Speeding”
- Si → “Warning”
- Si → “Ticket”
Implementación en JavaScript
function speedCheck(speedMph, speedLimitKph) {
const speedKPH = speedMph * 1.60934
if (speedKPH <= speedLimitKph)
return 'Not Speeding'
if (speedKPH <= speedLimitKph + 5)
return 'Warning'
return 'Ticket'
}⚡ Análisis de Complejidad
- Tiempo:
- Espacio:
🧩 Casos Edge y Consideraciones
- Si la velocidad es igual al límite → “Not Speeding”
- Si es exactamente 5 KPH arriba → “Warning”
- Velocidad negativa o cero → “Not Speeding” (no tiene sentido real, pero el código lo permite)
- La precisión depende del factor de conversión ()
💡 Reflexiones y Aprendizajes
¿Qué aprendimos?
- Convertir unidades
- Pensar en los edge cases