Masz monetę, która produkuje 0lub 1. Ale podejrzewasz, że moneta może być stronnicza , co oznacza, że prawdopodobieństwo 0(lub 1) niekoniecznie wynosi 1/2.
Dobrze znana procedura „przekształcić” tendencyjnego monety do sprawiedliwego monety (czyli uzyskanie równie prawdopodobnych wyników), w wersji zaproponowanej przez von Neumanna, jest następująca. Wytwarzaj (nie zachodzące na siebie) bloki dwóch rzutów monetą, aż dwie wartości bloku będą się różnić; i wypisz pierwszą wartość w tym bloku (druga wartość też by zrobiła, ale dla celów tego wyzwania wybieramy pierwszą). Intuicyjnie 1może być bardziej prawdopodobne 0, ale 01i 10równie prawdopodobne.
Na przykład dane wejściowe 1110...odrzuciłyby pierwszy blok, a następnie wygenerowałyby 1z drugiego bloku, ...
Ta procedura jest droga , ponieważ do wygenerowania jednego wyniku zużywa się kilka rzutów monetą.
Wyzwanie
Weź skończoną sekwencję zer i jedynek, reprezentujących rzuty oryginalnej monety, i uzyskaj maksymalną liczbę wyników zgodnie z powyższą procedurą, aż do wyczerpania całego wkładu.
Ostatni blok może być niekompletny, jeśli liczba wartości wejściowych jest nieparzysta. Na przykład sekwencja wejściowa 11111nie dałaby rezultatu (pierwsze dwa bloki mają równe wartości, a trzeci blok jest niekompletny).
Zasady
Dane wejściowe mogą mieć dowolną nieujemną liczbę wartości, niekoniecznie dodatnią, a nawet parzystą.
Format wejściowy może być:
- tablica zer i jedynek;
- ciąg zer i jedynek z opcjonalnym separatorem.
Format wyjściowy może być:
- ciąg zer i jedynek, z separatorami lub bez;
- tablica zer i jedynek;
- ciągi zawierające pojedyncze zero lub jeden, oddzielone znakami nowej linii;
- każdy podobny, rozsądny format, który pasuje do twojego języka.
Kod golfa. Wygrywa najmniej bajtów.
Przypadki testowe
Zakłada się, że dane wejściowe i wyjściowe są ciągami.
Input --> Output
'1110' --> '1'
'11000110' --> '01'
'1100011' --> '0'
'00' --> ''
'1' --> ''
'' --> ''
'1101001' --> '0'
'1011101010' --> '1111'





