La ronda del farolero
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- comparaciones
- ciclos
- listas
Enunciado
París, 1850. Al caer la noche, Anatole sale de su casa con la pértiga al hombro y enciende los faroles de una calle larga, siempre yendo al apagado que le queda más cerca. Quiere saber cuánto camina.
Recibes faroles, la posición de cada farol en la calle: enteros distintos, en cualquier orden, que pueden ser negativos y nunca son 0 (puede venir vacía). Anatole empieza en la posición 0. Mientras quede alguno apagado, camina al apagado más cercano a donde está, suma esa distancia (la resta de las dos posiciones, sin signo) y lo enciende.
Si dos quedan igual de cerca, va al de posición más chica. Al final no regresa a casa.
Con [5, -2, 3, 9]: del 0 al -2 camina 2, del -2 al 3 camina 5, del 3 al 5 camina 2 y del 5 al 9 camina 4. En total, 13.
Regresa la distancia total como entero. Sin faroles, regresa 0.
Ejemplos
El ejemplo
[5, -2, 3, 9] → 13
Empate al primer paso
[3, -3, 5] → 11
El más cercano cambia con cada paso
[-4, 3, 5] → 14
Tres cerca y uno lejos
[1, 2, 3, -10] → 16
Un solo farol, a la izquierda
[-6] → 6
No hay faroles
[] → 0
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def ronda(faroles):
passJavaScript
function ronda(faroles) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.