Нашли ошибку?

Первая сломанная сборка

СредняяРеализацияГлава 1

#бинарный поиск#поиск по ответуid: ga-first-bad-build

Сборки проекта пронумерованы от 1 до n. В какой-то момент в код попала ошибка, и с этой сборки все последующие тоже сломаны. Функция is_bad(k) проверяет сборку k, но каждый вызов занимает десять минут. Напишите first_bad_build(n, is_bad): она возвращает номер первой сломанной сборки или -1, если все сборки исправны.

Пример

# сломаны сборки 4, 5, 6, 7
first_bad_build(7, lambda k: k >= 4)   # 4
first_bad_build(7, lambda k: False)    # -1

Ограничения

Решение

from collections.abc import Callable


def first_bad_build(n: int, is_bad: Callable[[int], bool]) -> int:
    """Возвращает номер первой сломанной сборки из 1..n или -1."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 first_bad_build.py — тесты те же, результат покажет ✓ / ✗ и итог.