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