พื้นหลัง
สำหรับจุดประสงค์ของการท้าทายนี้ออn
โตมาตาเซลลูลาร์เป็นเพียงฟังก์ชันเลขฐานสองf
ที่ใช้ตัวเลขสองตัวจากสถานะที่ตั้ง{0, 1, ..., n-1}
เป็นอินพุตและส่งกลับตัวเลขอื่นจากชุดนั้นเป็นเอาต์พุต สามารถนำไปใช้กับรายการที่มีความยาวอย่างน้อย 2 ตัวL = [x0, x1, x2, ..., xk-1]
f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)]
โปรดทราบว่ารายการผลลัพธ์มีองค์ประกอบน้อยกว่าองค์ประกอบเดิมหนึ่งรายการ แผนภาพกาลอวกาศของf
เริ่มต้นจากการL
เป็นรายการของรายการที่ได้รับด้วยซ้ำใช้f
ไปL
และเก็บรวบรวมผลในรายการ รายการสุดท้ายมีความยาว 1. เราบอกว่ารายการL
เป็นลำดับที่ระบุสำหรับถ้าทุกรายการสององค์ประกอบมากกว่าชุดที่รัฐเป็นรายการย่อยที่อยู่ติดกันแถวของกาลอวกาศแผนภาพที่เริ่มต้นจากบางส่วนf
L
นี่เทียบเท่ากับเงื่อนไขที่ไม่มีn
แคลิฟอร์เนีย -state อื่นมีไดอะแกรม spacetime ที่แน่นอน
อินพุต
ปัจจัยการผลิตของคุณเป็นn
-by- n
เมทริกซ์จำนวนเต็มM
รายชื่อของจำนวนเต็มL
ของความยาวอย่างน้อย 2 n
และเลือกหมายเลข เมทริกซ์M
กำหนดn
-state CA f
โดยf(a,b) = M[a][b]
(ใช้การจัดทำดัชนีแบบ 0) มันรับประกันได้ว่าn > 0
และที่M
และL
มีองค์ประกอบของชุดรัฐ{0, 1, ..., n-1}
เท่านั้น
เอาท์พุต
ผลลัพธ์ของคุณจะเป็นค่าความจริงที่สอดคล้องกันหากL
เป็นลำดับการระบุสำหรับ CA f
และค่าเท็จที่สอดคล้องกันเป็นอย่างอื่น ซึ่งหมายความว่าสาร "ใช่" ทั้งหมดส่งผลให้มีค่าความจริงเหมือนกันและสารทั้งหมด "ไม่" จะส่งผลให้มีค่าเท็จ
ตัวอย่าง
พิจารณาปัจจัยการผลิตn = 2
, และM = [[0,1],[1,0]]
L = [1,0,1,1]
เมทริกซ์M
กำหนดออโตเมติก XOR แบบไบนารีf(a,b) = a+b mod 2
และแผนภาพกาลอวกาศที่เริ่มต้นจากL
คือ
1 0 1 1
1 1 0
0 1
1
แผนภาพนี้ไม่ได้มี0 0
ในแถวใด ๆ ดังนั้นไม่ได้เป็นลำดับการระบุและการส่งออกที่ถูกต้องคือL
False
ถ้าเราใส่L = [0,1,0,0]
แทนสเปซไทม์ไดอะแกรมคือ
0 1 0 0
1 1 0
0 1
1
แถวของแผนภาพนี้มีทุกคู่ที่มาจากชุดรัฐคือ0 0
, 0 1
, 1 0
และ1 1
เพื่อให้เป็นลำดับการระบุและการส่งออกที่ถูกต้องคือL
True
กฎระเบียบ
คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต
กรณีทดสอบ
Trivial automaton
[[0]] [0,0] 1 -> True
Binary XOR
[[0,1],[1,0]] [1,0,1,1] 2 -> False
[[0,1],[1,0]] [1,0,1,0] 2 -> True
[[0,1],[1,0]] [0,1,0,0] 2 -> True
Addition mod 3
[[0,1,2],[1,2,0],[2,0,1]] [0,1,1,0,0,0,1,0,0] 3 -> False
[[0,1,2],[1,2,0],[2,0,1]] [0,1,1,0,0,0,1,0,1] 3 -> True
Multiplication mod 3
[[0,0,0],[0,1,2],[0,2,1]] [0,1,1,2,0,0,1,0,1] 3 -> False
[[0,0,0],[0,1,2],[0,2,1]] [0,1,1,2,2,2,1,0,1] 3 -> True
Some 4-state automata
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,0,0,0,1,1,1,1] 4 -> False
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,0,0,1,0,1,1,1] 4 -> False
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,1,2,3,3,1,2,3,0] 4 -> True
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,0,1,1,2,2,0,2,1] 4 -> False
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,3,1,3,2,3,3,0,1] 4 -> False
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,3,1,3,2,3,3,0,1,2] 4 -> True