fundo
Sim, a física da cadeia de bits é uma coisa real . A idéia é construir uma nova teoria da física usando apenas cadeias de bits que evoluem sob uma regra probabilística ... ou algo assim. Apesar de ler alguns artigos sobre isso, ainda estou bastante confusa. No entanto, o universo bitstring contribui para um bom código de golfe.
Program Universe
A física da cadeia de bits ocorre no chamado universo do programa . Em cada etapa da evolução do universo, há uma lista finita L
de cadeias de bits de algum comprimento k
, começando pela lista de dois elementos em [10,11]
que k = 2
. Um timestep é processado da seguinte maneira (no pseudocódigo do tipo 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 as escolhas aleatórias são uniformemente aleatórias e independentes uma da outra.
Exemplo
Um exemplo de evolução de 4 etapas pode parecer com o seguinte. Comece com a lista inicial L
:
10
11
Escolhemos aleatoriamente A := 10
e B := 10
, que são a mesma linha, o que significa que precisamos estender cada sequência L
com um bit aleatório:
101
110
Em seguida, escolhemos A := 101
e B := 110
, como eles não são iguais, adicionamos seu XOR a L
:
101
110
011
Em seguida, escolhemos A := 011
e B := 110
, novamente, anexamos seu XOR:
101
110
011
101
Finalmente, escolhemos A := 101
(última linha) e B := 101
(primeira linha), que são iguais, portanto, estendemos com bits aleatórios:
1010
1100
0111
1010
A tarefa
Sua tarefa é pegar um número inteiro não negativo t
como entrada, simular o universo do programa para t
timesteps e retornar ou imprimir a lista resultante L
. Observe que t = 0
resulta na lista inicial [10,11]
. Você pode imprimir L
como uma lista de listas de números inteiros, lista de listas de valores booleanos ou uma lista de strings; se a saída for STDOUT, você também poderá imprimir as cadeias de bits uma por linha em algum formato razoável. A ordem das seqüências de bits é significativa; em particular, a lista inicial não pode ser [11,10]
, [01,11]
ou algo assim. Ambas as funções e programas completos são aceitáveis, brechas padrão não são permitidas e a menor contagem de bytes vence.