Fondo
Sí, la física de las cadenas de bits es algo real . La idea es construir una nueva teoría de la física utilizando solo cadenas de bits que evolucionen bajo una regla probabilística ... o algo así. A pesar de leer un par de artículos al respecto, todavía estoy bastante confundido. Sin embargo, el universo de la cadena de bits lo convierte en un bonito código de golf.
Programa Universo
La física de Bitstring tiene lugar en el llamado universo de programas . En cada paso de la evolución del universo, hay una lista finita L
de cadenas de bits de cierta longitud k
, comenzando con la lista de dos elementos [10,11]
donde k = 2
. Un paso de tiempo se procesa de la siguiente manera (en pseudocódigo similar a 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
Todas las elecciones aleatorias son uniformemente aleatorias e independientes entre sí.
Ejemplo
Un ejemplo de evolución de 4 pasos podría ser el siguiente. Comience con la lista inicial L
:
10
11
Elegimos aleatoriamente A := 10
y B := 10
, que son la misma fila, lo que significa que necesitamos extender cada cadena L
con un bit aleatorio:
101
110
A continuación, elegimos A := 101
y B := 110
, y dado que no son iguales, agregamos su XOR a L
:
101
110
011
Luego, elegimos A := 011
y B := 110
, y nuevamente agregamos su XOR:
101
110
011
101
Finalmente, elegimos A := 101
(última fila) y B := 101
(primera fila), que son iguales, por lo que ampliamos con bits aleatorios:
1010
1100
0111
1010
La tarea
Su tarea es tomar un número entero no negativo t
como entrada, simular el universo del programa para t
pasos de tiempo y devolver o imprimir la lista resultante L
. Tenga t = 0
en cuenta que los resultados en la lista inicial [10,11]
. Puede generar L
una lista de listas de enteros, una lista de listas de valores booleanos o una lista de cadenas; si la salida va a STDOUT, también puede imprimir las cadenas de bits una por línea en algún formato razonable. El orden de las cadenas de bits es significativo; en particular, la lista inicial no puede ser [11,10]
, [01,11]
ni nada de eso. Ambas funciones y programas completos son aceptables, las lagunas estándar no están permitidas y gana el conteo de bytes más bajo.