Contexte
Oui, la physique des chaînes de bits est une chose réelle . L'idée est de construire une nouvelle théorie de la physique en utilisant uniquement des chaînes de bits qui évoluent sous une règle probabiliste ... ou quelque chose. Malgré la lecture de quelques articles à ce sujet, je suis toujours assez confus. Cependant, l'univers bitstring fait un joli petit golf de code.
Univers du programme
La physique des chaînes de bits se déroule dans un soi-disant univers de programme . À chaque étape de l'évolution de l'univers, il y a une liste finie L
de chaînes de bits d'une certaine longueur k
, en commençant par la liste à deux éléments [10,11]
où k = 2
. Un pas de temps est traité comme suit (en pseudocode de type 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
Tous les choix aléatoires sont uniformément aléatoires et indépendants les uns des autres.
Exemple
Un exemple d'évolution de 4 étapes pourrait ressembler à ce qui suit. Commencez avec la liste initiale L
:
10
11
Nous choisissons au hasard A := 10
et B := 10
, qui sont la même ligne, ce qui signifie que nous devons étendre chaque chaîne L
avec un bit aléatoire:
101
110
Ensuite, nous choisissons A := 101
et B := 110
, et comme ils ne sont pas égaux, nous ajoutons leur XOR à L
:
101
110
011
Ensuite, nous choisissons A := 011
et B := 110
, et ajoutons à nouveau leur XOR:
101
110
011
101
Enfin, nous choisissons A := 101
(dernière ligne) et B := 101
(première ligne), qui sont égaux, nous étendons donc avec des bits aléatoires:
1010
1100
0111
1010
La tâche
Votre tâche consiste à prendre un entier non négatif t
en entrée, à simuler l'univers du programme pour les pas de t
temps et à retourner ou imprimer la liste résultante L
. Notez que cela t = 0
donne la liste initiale [10,11]
. Vous pouvez produire L
une liste de listes d'entiers, une liste de listes de valeurs booléennes ou une liste de chaînes; si la sortie passe à STDOUT, vous pouvez également imprimer les chaînes de bits une par ligne dans un format raisonnable. L'ordre des chaînes de bits est significatif; en particulier, la liste initiale ne peut pas être [11,10]
, [01,11]
ou quelque chose comme ça. Les fonctions et les programmes complets sont acceptables, les failles standard sont interdites et le nombre d'octets le plus bas l'emporte.