Saltar al contenido

Los cruces del péndulo

Enunciado

Valeria colgó un péndulo en el laboratorio con un sensor que mide su posición cada décima de segundo: negativa a la izquierda del centro, positiva a la derecha y 0 justo en el centro. Quiere saber cuántas veces pasó de un lado al otro.

Escribe una función que reciba la lista de lecturas (enteros o decimales; puede venir vacía) y regrese cuántos cruces hubo, como entero. Un cruce es una lectura del lado contrario a la última lectura que no fue 0. El 0 no es de ningún lado: ni es cruce ni cambia de lado. Así, [2, 0, -3] tiene un cruce y [2, 0, 3] no tiene ninguno. La primera lectura que no es 0 tampoco es cruce, porque no hay con qué compararla.

Con [3, -2, -1, 4] hay dos cruces: de 3 a -2 y de -1 a 4.

Ejemplos

  • Cruza en cada lectura

    [3, -2, 4, -1] → 3

  • Siempre del mismo lado

    [1, 2, 3] → 0

  • Un cero entre lados distintos

    [2, 0, -2] → 1

  • Un cero entre lados iguales

    [2, 0, 3] → 0

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def cruces(lecturas):
    pass

JavaScript

function cruces(lecturas) {
}
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 →