Hai una moneta che produce 0o 1. Ma si sospetta che la moneta può essere prevenuto , il che significa che la probabilità di 0(o 1) non è necessariamente 1/2.
Una procedura ben nota per "trasformare" una moneta distorta in una moneta giusta (cioè per ottenere risultati altrettanto probabili), come proposta da von Neumann, è la seguente. Produci blocchi (non sovrapposti) di due lanci di monete fino a quando i due valori di un blocco differiscono; e genera il primo valore in quel blocco (lo farebbe anche il secondo valore, ma ai fini di questa sfida scegliamo il primo). Intuitivamente, 1potrebbe essere più probabile di 0, ma 01e 10sarà ugualmente probabile.
Ad esempio, l'ingresso 1110...eliminerebbe il primo blocco, quindi produrrebbe un 1dal secondo blocco, ...
Questa procedura è costosa , poiché vengono utilizzati diversi lanci di monete per generare un singolo risultato.
La sfida
Prendi una sequenza finita di zeri e uno, che rappresentano i lanci della moneta originale, e produci il numero massimo di risultati secondo la procedura sopra, fino a quando tutto l'input è consumato.
L'ultimo blocco può essere incompleto, se il numero di valori di input è dispari. Ad esempio, la sequenza di input 11111non produrrebbe alcun risultato (i primi due blocchi hanno valori uguali e il terzo blocco è incompleto).
Regole
L'input può avere qualsiasi numero non negativo di valori, non necessariamente positivo o pari.
Il formato di input può essere:
- una matrice di zeri e uno;
- una stringa di zeri e quelli con un separatore opzionale.
Il formato di output può essere:
- una stringa di zeri e uno, con o senza separatori;
- una matrice di zeri e uno;
- stringhe contenenti un singolo zero o uno, separate da newline;
- qualsiasi formato simile e ragionevole adatto alla tua lingua.
Codice golf. Vince il minor numero di byte.
Casi test
Si presume che input e output siano stringhe.
Input --> Output
'1110' --> '1'
'11000110' --> '01'
'1100011' --> '0'
'00' --> ''
'1' --> ''
'' --> ''
'1101001' --> '0'
'1011101010' --> '1111'





