У вас є монета , яка виробляє 0
або 1
. Але ви підозрюєте, що монета може бути упередженою , це означає, що ймовірність 0
(або 1
) не обов'язково становить 1/2.
Добре відома процедура «перетворення» Необ'єктивне монету в справедливої монети (тобто для отримання результатів з однаковою ймовірністю), як це було запропоновано фон Неймана, полягає в наступному. Виробляйте (не перекриваючись) блоки двох кидок монети, поки два значення блоку не відрізняються; і виводимо перше значення в цей блок (друге значення також буде зроблено, але для цілей цього виклику ми обираємо перше). Наочно, 1
може бути більш імовірно , ніж 0
, але 01
і 10
буде з однаковою ймовірністю.
Наприклад, вхід 1110...
буде відкидати перший блок, а потім виробляти 1
з другого блоку, ...
Ця процедура дорога , тому що для отримання одного результату витрачається кілька кидків монет.
Змагання
Візьміть кінцеву послідовність нулів і одиниць, що представляють кидки оригінальної монети, і створіть максимальну кількість результатів згідно з вищевказаною процедурою, поки весь вхід не буде витрачений.
Останній блок може бути неповним, якщо кількість вхідних значень непарна. Наприклад, послідовність введення 11111
не дала б результату (перші два блоки мають рівні значення, а третій - неповний).
Правила
Вхід може мати будь-яке негативне число значень, не обов'язково додатне чи парне.
Формат введення може бути:
- масив нулів і одиниць;
- рядок нулів і одиниць з додатковим роздільником.
Формат виводу може бути:
- рядок нулів і одиниць, з роздільниками або без них;
- масив нулів і одиниць;
- рядки, що містять один нуль або один, розділені новими рядками;
- будь-який подібний, розумний формат, який відповідає вашій мові.
Код гольфу. Виграє найменше байт.
Тестові справи
Введення та вихід тут вважаються рядками.
Input --> Output
'1110' --> '1'
'11000110' --> '01'
'1100011' --> '0'
'00' --> ''
'1' --> ''
'' --> ''
'1101001' --> '0'
'1011101010' --> '1111'