Arka fon
Evet, bit fiziği fiziği gerçek bir şeydir . Buradaki fikir, yalnızca olasılıklı bir kural altında gelişen bit dizgilerini veya başka bir şeyi kullanarak yeni bir fizik teorisi inşa etmektir. Bununla ilgili birkaç makale okuduğum halde hala kafam oldukça karıştı. Bununla birlikte, bit eşlik eden evren güzel bir küçük kod golfü yaratır.
Program Evreni
Bitstring fiziği, sözde program evreninde gerçekleşir . Evrenin evrimi Her adımda, sonlu bir listesi var Lbazı uzunlukta bit katarı içinde kiki eleman listesi ile başlayan [10,11]nerede k = 2. Bir zaman adımı aşağıdaki gibi işlenir (Python benzeri sahte kodda).
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
Tüm rastgele seçimler eşit olarak rasgele ve birbirlerinden bağımsızdır.
Örnek
4 adımdan oluşan bir örnek evrimi aşağıdakine benzeyebilir. İlk listeden başlayın L:
10
11
Rastgele seçiyoruz A := 10ve B := 10aynı satır olan hangisini seçiyoruz , yani her dizeyi Lrastgele bir bitle genişletmemiz gerekiyor :
101
110
Sonra, biz seçiyoruz A := 101ve B := 110eşit olmadıkları için XOR'larını şuna ekledik L:
101
110
011
Daha sonra, seçim A := 011ve B := 110ve yine kendi XOR ekleyin:
101
110
011
101
Son olarak, eşit olan A := 101(son satır) ve B := 101(ilk satır) seçimini yaparız , bu nedenle rastgele bitlerle genişletiriz:
1010
1100
0111
1010
Görev
Göreviniz tgirdi olarak negatif olmayan bir tamsayı almak , program evrenini ttimesteps için simüle etmek ve sonuç listesini döndürmek veya yazdırmaktır L. t = 0İlk listede sonuçlandığını unutmayın [10,11]. Bir Ltamsayı listesi, boolean değer listesi veya bir dize listesi olarak çıktı alabilirsiniz; Eğer çıktı STDOUT'a giderse, bitstrings'i her satıra bir tane olacak şekilde basabilirsiniz. Bit dizelerinin sırası önemlidir; Özellikle, ilk liste olamaz [11,10], [01,11]ya da böyle bir şey. Hem fonksiyonlar hem de tam programlar kabul edilebilir, standart boşluklara izin verilmez ve en düşük bayt sayısı kazanır.