Üreten bir bozuk para var 0
ya da 1
. Ancak madalyonun önyargılı olabileceğinden şüpheleniyorsunuz, bu da 0
(veya 1
) olasılığının mutlaka 1/2 olmadığı anlamına geliyor.
Bir iyi bilinen bir halinde, bir eğimli para "dönüştürme" prosedürü bol para von Neumann önerdiği gibi, (örneğin, eşit olasılıkla sonuçları elde etmek için), aşağıdaki gibi olan. Bir bloğun iki değeri farklı oluncaya kadar iki bozuk para fırlatmanın bloklarını (üst üste binmeyen) üretin; ve bu bloktaki ilk değeri (ikinci değer de yapar, ancak bu zorluğun amaçları için ilkini seçeriz) çıkar. Sezgisel, 1
daha muhtemel olabilir 0
, ancak 01
ve 10
eşit olasılığı artacaktır.
Örneğin, giriş 1110...
ilk bloğu atar, ardından 1
ikinci bloğu a'dan bir ...
Bu prosedür pahalıdır , çünkü tek bir sonuç elde etmek için birkaç jeton fırlatıcısı tüketilir.
Meydan okuma
Orijinal madalyonun atışlarını temsil eden sonlu bir sıfırlar ve sayılar dizisini alın ve tüm girdiler tüketilene kadar yukarıdaki prosedüre göre maksimum sonuç sayısını üretin .
Girdi değerlerinin sayısı tek ise son blok eksik olabilir. Örneğin, giriş dizisi 11111
sonuç vermeyecektir (ilk iki blok eşit değerlere sahiptir ve üçüncü blok eksiktir).
kurallar
Girdi, negatif veya kesin olmayan değerlere sahip olabilir, mutlaka pozitif veya eşit olmayabilir.
Giriş formatı şöyle olabilir:
- bir dizi sıfır ve sıfır;
- isteğe bağlı bir ayırıcıya sahip sıfırlar ve olanlar.
Çıkış formatı olabilir:
- ayırıcı olan veya olmayan bir sıfır ve sıfır dizisi;
- bir dizi sıfır ve sıfır;
- newlines ile ayrılmış, tek bir sıfır veya bir içeren dizeler;
- Dilinize uygun herhangi bir benzer, makul format.
Kod golfü. En az bayt kazanır.
Test durumları
Burada girdi ve çıktı dizge olarak kabul edilir.
Input --> Output
'1110' --> '1'
'11000110' --> '01'
'1100011' --> '0'
'00' --> ''
'1' --> ''
'' --> ''
'1101001' --> '0'
'1011101010' --> '1111'