Zadanie
Zadanie polega na napisaniu programu, który wypisze spójną, ale poza tym dowolną liczbę całkowitą dodatnią (tak ściśle większą niż 0). Oto haczyk: gdy źródło jest powtarzane razy (kod jest dołączany / łączony do siebie), program powinien mieć prawdopodobieństwo wyprowadzeniaa pozostałe prawdopodobieństwo wyjścianiezmienione.
Przykład
Załóżmy, że twoim początkowym źródłem jest XYZ
liczba całkowita 3
. Następnie:
Dla :
XYZXYZ
powinno wyprowadzać z prawdopodobieństwem (50% czasu) iz prawdopodobieństwem również (50% czasu).Dla :
XYZXYZXYZ
należy wyprowadzić z prawdopodobieństwem (66,666% czasu) iz prawdopodobieństwem (33,333% czasu)Dla :
XYZXYZXYZXYZ
należy wyprowadzić z prawdopodobieństwem (75% czasu) i z prawdopodobieństwem (25% czasu)
i tak dalej....
Zasady
Musisz zbudować pełny program . Wyjście musi zostać wydrukowane do STDOUT.
Twój program powinien teoretycznie wypisywać każdą możliwą wartość z podanymi wyżej prawdopodobieństwami, ale niewielkie odchylenie od tego z powodu realizacji losowej jest w porządku ( pod warunkiem, że implementacja nie ma innego rozkładu - nie możesz użyć rozkład normalny, aby zapisać bajty ) .
Program powinien (znowu teoretycznie) praca dla dowolnie dużej wartości , ale ograniczenia techniczne dzięki precyzyjnym są w porządku dla dużych .
Dane wyjściowe muszą znajdować się w bazie 10 (wysyłanie danych do jakiejkolwiek innej bazy lub z notacją naukową jest zabronione). Dozwolone są spacje końcowe / początkowe i zera wiodące.
Początkowe źródło musi (oczywiście) mieć co najmniej 1 bajt. Być może nie przyjąć nowej linii między kopiami źródle. Program nie powinien pobierać danych wejściowych (lub mieć nieużywane, puste dane wejściowe).
To jest golf golfowy , więc wynikiem odpowiedzi jest długość (oryginalnego) źródła w bajtach, przy czym niższy wynik jest lepszy.
Uwaga: To wyzwanie jest (znacznie) trudniejszą wersją tego wyzwania .