Saltar al contenido

Las capturas del mismo peso

Enunciado

Rosalía es patrona de un barco y al llegar a la lonja entrega la bitácora del día: un renglón por captura, con su peso en kilos, ya ordenada de la más ligera a la más pesada. El comprador dice un peso y quiere saber desde qué renglón hasta qué renglón están las capturas de ese peso, para llevárselas todas juntas.

Escribe una función que reciba la lista de pesos ordenada de menor a mayor y un peso, y regrese una lista de dos números: el renglón donde ese peso aparece por primera vez y el renglón donde aparece por última vez. Los renglones se cuentan desde 0, así que en 2, 4, 4, 4, 7 y 9 el peso 4 regresa [1, 3].

Si ese peso no salió en todo el día, regresas [-1, -1]. Con la bitácora vacía, igual.

La bitácora siempre llega ordenada: no tienes que revisarlo.

No se vale usar lo que ya trae el lenguaje para encontrar una posición (index, indexOf, lastIndexOf) ni para contar repeticiones (count): el chiste del reto es partir la bitácora.

Idea: son dos búsquedas por mitades sobre la misma lista. En las dos, cuando el renglón de en medio trae el peso que buscas, anótalo y no te detengas: una sigue hacia la izquierda, a ver si hay otro antes, y la otra hacia la derecha.

Ejemplos

  • La captura de cuatro kilos

    [2, 4, 4, 4, 7, 9], 4 → [1, 3]

  • Un solo renglón

    [2, 4, 4, 4, 7, 9], 9 → [5, 5]

  • El primer renglón

    [2, 4, 4, 4, 7, 9], 2 → [0, 0]

  • Ese peso no salió

    [2, 4, 4, 4, 7, 9], 5 → [-1, -1]

  • Toda la bitácora del mismo peso

    [5, 5, 5, 5], 5 → [0, 3]

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

Empiezas con esto

Python

def tramo(pesos, peso):
    pass

JavaScript

function tramo(pesos, peso) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.

Más retos de O(log n)

Ver todos los retos →