Saltar al contenido

La ronda del farolero

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):
    pass

JavaScript

function ronda(faroles) {
}
Resolver este reto

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.

Más retos de O(n²)

Ver todos los retos →