バックグラウンド
はい、ビットストリング物理学は本物です。アイデアは、確率論的ルール...または何かの下で進化するビット列のみを使用して、物理学の新しい理論を構築することです。それについていくつかの論文を読んだにもかかわらず、私はまだかなり混乱しています。ただし、ビットストリングユニバースは、素敵な小さなコードゴルフを実現します。
プログラムユニバース
ビットストリング物理学は、いわゆるプログラムユニバースで行われます。宇宙の進化の各ステップには、2要素のリストで始まる、L長さのあるビット文字列の有限リストがあります。1つのタイムステップは、次のように処理されます(Pythonのような擬似コード)。k[10,11]k = 2
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に送られた場合、ビットストリングを適切な形式で1行に1つずつ印刷することもできます。ビット列の順序は重要です。特に、最初のリストを[11,10]、[01,11]またはそのようなものにすることはできません。関数と完全なプログラムの両方が許容され、標準の抜け穴は許可されず、最小のバイト数が優先されます。