Saltar al contenido

La sección de la página

Enunciado

Celia arma el periódico y tiene a un lado la lista de las secciones: en qué página empieza cada una, en orden. Llega una corrección para una página y necesita saber de qué sección es, para avisarle a quien la escribió.

Escribe una función que reciba la lista de páginas donde arranca cada sección y el número de una página, y regrese la posición de la sección a la que pertenece esa página, contando las secciones desde 0. Es la última sección cuyo arranque no se pasa de esa página.

Con los arranques 1, 9, 14 y 20, la página 13 es de la sección 1, porque esa sección va de la página 9 a la 13. La página 9 también es de la sección 1: la página donde arranca una sección ya cuenta como suya.

La lista trae al menos un arranque, el primero siempre es la página 1 y la página que te piden siempre es 1 o más, así que siempre hay respuesta.

No se vale usar lo que ya trae el lenguaje para encontrar una posición (index, indexOf, findIndex, findLastIndex): el chiste del reto es partir la lista.

Idea: búscala por mitades. Si el arranque de en medio no se pasa de la página, esa sección es candidata: anótala y sigue buscando a la derecha, por si más adelante hay otra que tampoco se pasa. Si se pasa, tira esa mitad.

Ejemplos

  • La corrección de la página 13

    [1, 9, 14, 20], 13 → 1

  • La página donde arranca una sección

    [1, 9, 14, 20], 9 → 1

  • La primera página

    [1, 9, 14, 20], 1 → 0

  • La última sección

    [1, 9, 14, 20], 25 → 3

  • La página antes del último arranque

    [1, 9, 14, 20], 19 → 2

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

Empiezas con esto

Python

def seccion(inicios, pagina):
    pass

JavaScript

function seccion(inicios, pagina) {
}
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 →