Задний план
Да, физика цепочек - это реальная вещь . Идея состоит в том, чтобы построить новую теорию физики, используя только цепочки битов, которые развиваются по вероятностному правилу ... или что-то в этом роде. Несмотря на чтение нескольких статей об этом, я все еще в замешательстве. Тем не менее, вселенная битрейн делает для милого маленького кода гольф.
Программа Вселенная
Физика цепочек происходит в так называемой программной вселенной . На каждом этапе эволюции вселенной существует конечный список 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]
или что-то в этом роде. Приемлемы как функции, так и полные программы, стандартные лазейки запрещены, и побеждает меньшее количество байтов.