Las capturas del mismo peso
- O(log n) · Fácil
- Gratis
- Python
- JavaScript
- listas
- búsqueda
- índices
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):
passJavaScript
function tramo(pesos, peso) {
}Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.