Завдання
Завдання полягає в тому, щоб написати програму, яка виводить послідовне, але інакше довільне додатне ціле число (настільки суворо більше, ніж 0). Ось улов: коли джерело повторюється разів (код додається / об'єднує до себе), програма повинна мати ймовірність виведення та решту ймовірностей виведення без змін.
Приклад
Припустимо, що вашим початковим джерелом є XYZ
і виробляє ціле число 3
. Потім:
Для : слід вивести з ймовірністю (50% часу) та з ймовірністю також % часу).
XYZXYZ
Для : слід вивести з вірогідністю (66.666% часу) і з ймовірністю (33.333% від час)
XYZXYZXYZ
Для : слід вивести з вірогідністю (75% часу) і з ймовірністю (25% від час)
XYZXYZXYZXYZ
і так далі....
Правила
Ви повинні створити повну програму . Вихід повинен бути надрукований в STDOUT.
Теоретично ваша програма повинна виводити кожне можливе значення із зазначеними вище ймовірностями, але незначне відхилення від цього через реалізацію випадкових випадків є нормальним (за умови, що реалізація не має іншого розподілу - ви не можете використовувати нормальний розподіл для збереження байтів ) .
Програма повинна (знову ж , в теорії) робота при як завгодно великому значенні , але технічні обмеження , пов'язані з точністю гарні для великих .
Вихід повинен бути в базі 10 (виведення в будь-яку іншу базу або з науковими позначеннями заборонено). Дозволені проміжні / провідні простори та нульові нулі.
Початкове джерело повинно (звичайно) бути не менше 1 байта. Ви не можете припускати новий рядок між копіями джерела. Програма не повинна приймати дані (або мати невикористаний, порожній вхід).
Це код-гольф , тому оцінка відповіді - це довжина (оригінального) джерела в байтах, при цьому нижчий бал є кращим.
Примітка. Цей виклик є (набагато складнішою) версією цієї .