Честная монетка из нечестной

MediumАлгоритмы
04:00
Лучше работает на десктопе
AlgorithmsProbabilityRandomness
Реальный собес41:42-44:32Dubai Tech Interview 2.m4aСтраница собеса

Есть монетка с неизвестной вероятностью орла p, где 0 < p < 1. Нужно получить один честный бит: 0 или 1 с вероятностью 50/50.

В тренажере вместо настоящего генератора вам передается список уже полученных бросков flips, где 0 и 1 — два исхода biased coin.

Читайте броски парами:

  • [0, 1] возвращает честный результат 0;
  • [1, 0] возвращает честный результат 1;
  • [0, 0] и [1, 1] отбрасываются.

Верните [result, used_flips], где used_flips — сколько бросков было прочитано до первого результата. Если в списке не хватило бросков для результата, верните None.

Сигнатура

def fair_coin_from_biased(flips: list[int]) -> list[int] | None:

Примеры

Пример 1

Вход:
flips = [0,1]
Выход:[0,2]

Пример 2

Вход:
flips = [1,0]
Выход:[1,2]

Пример 3

Вход:
flips = [0,0,1,1,1,0]
Выход:[1,6]
Консоль
Нажмите Run или Ctrl+Enter для запуска