Фон
Так, фізика гризків - це реальна річ . Ідея полягає в тому, щоб побудувати нову теорію фізики, використовуючи лише рядки бітів, які розвиваються за імовірнісним правилом ... чи щось. Незважаючи на те, що прочитав про це пару паперів, я все ще досить розгублений. Тим не менше, всесвітній бітстринг створює хороший гольф з невеликим кодом.
Програма Всесвіту
Фізика бітстрингу відбувається в так званій програмній всесвіті . На кожному кроці еволюції Всесвіту є кінцевий список Lбіткових рядків деякої довжини k, починаючи з двоелементного списку, [10,11]де k = 2. Один часовий крок обробляється наступним чином (у псевдокоді, подібному до Python).
A := random element of L
B := random element of L
if A == B:
for each C in L:
append a random bit to C
else:
append the bitwise XOR of A and B to L
Всі випадкові вибори рівномірно випадкові та незалежні один від одного.
Приклад
Приклад еволюції 4 кроків може виглядати наступним чином. Почніть з початкового списку L:
10
11
Ми вибираємо випадковим чином, A := 10і B := 10це той самий рядок, а це означає, що нам потрібно розширити кожну рядок Lвипадковим бітом:
101
110
Далі ми вибираємо A := 101і B := 110, оскільки вони не рівні, додаємо їх XOR до L:
101
110
011
Потім ми вибираємо A := 011і B := 110, і знову додаємо їх XOR:
101
110
011
101
Нарешті, ми вибираємо A := 101(останній рядок) і B := 101(перший рядок), які рівні, тому розширюємо випадковими бітами:
1010
1100
0111
1010
Завдання
Ваше завдання - взяти tяк вхідне невід’ємне ціле число , імітувати всесвіт програми на tетапі часу, а також повернути або роздрукувати отриманий список L. Зауважте, що t = 0результати виходять з початкового списку [10,11]. Ви можете виводити Lу вигляді списку цілих чисел, списків булевих значень або списку рядків; якщо висновок переходить до STDOUT, ви також можете надрукувати біт-рядки по одному в рядку у певному розумному форматі. Порядок бітстрингу є значним; зокрема, початковий список не може бути [11,10], [01,11]або що - небудь подібне. І функції, і повні програми прийнятні, стандартні лазівки заборонені, а найнижчий байт виграє.