พื้นหลัง
ใช่ bitstring ฟิสิกส์คือสิ่งที่จริง ความคิดคือการสร้างทฤษฎีใหม่ของฟิสิกส์โดยใช้เพียงบิตของบิตที่วิวัฒนาการภายใต้กฎความน่าจะเป็น ... หรือบางสิ่งบางอย่าง แม้ว่าฉันจะอ่านบทความเกี่ยวกับเรื่องนี้บ้าง แต่ฉันก็ยังสับสนอยู่ดี อย่างไรก็ตามจักรวาล bitstring ทำให้กอล์ฟโค้ดเล็ก ๆ
โปรแกรมจักรวาล
Bitstring ฟิสิกส์จะเกิดขึ้นในสิ่งที่เรียกว่าจักรวาลโปรแกรม ในขั้นตอนของวิวัฒนาการของจักรวาลแต่ละมีรายการที่ จำกัดL
ของ bitstrings ของความยาวบางส่วนk
ที่เริ่มต้นด้วยรายการสององค์ประกอบที่[10,11]
k = 2
การประทับเวลาหนึ่งครั้งจะถูกประมวลผลดังต่อไปนี้ (ใน Pseudocode like 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
ตัวเลือกแบบสุ่มทั้งหมดเป็นแบบสุ่มและเป็นอิสระจากกัน
ตัวอย่าง
ตัวอย่างวิวัฒนาการของ 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
เป็น input จำลองจักรวาลโปรแกรมสำหรับt
timesteps L
และกลับหรือพิมพ์รายการผลลัพธ์ โปรดทราบว่าผลลัพธ์ในรายการเริ่มต้นt = 0
[10,11]
คุณสามารถส่งออกL
เป็นรายการของรายการจำนวนเต็มรายการของรายการค่าบูลีนหรือรายการสตริง หากผลลัพธ์ไปที่ STDOUT คุณอาจพิมพ์บิตหนึ่งต่อบรรทัดในรูปแบบที่เหมาะสม คำสั่งของ bitstrings มีความสำคัญ; โดยเฉพาะในรายการเริ่มต้นไม่สามารถ[11,10]
, [01,11]
หรืออะไรอย่างนั้น ทั้งฟังก์ชั่นและโปรแกรมเต็มรูปแบบเป็นที่ยอมรับช่องโหว่มาตรฐานจะไม่ได้รับอนุญาตและชนะนับไบต์ต่ำสุด