ระบบแท็กวงกลมเป็นขนาดเล็กรูปแบบการคำนวณทัวริงสมบูรณ์ประกอบด้วยตัวอักษรสองสัญลักษณ์ (ฉันจะใช้{0,1}
) ซึ่งเป็นที่แน่นอนรายการวงจรว่างของโปรดักชั่นที่ประกอบด้วยทั้งสองสัญลักษณ์และมากมายคำซึ่งประกอบด้วย สัญลักษณ์ทั้งสองนั้น
ในแต่ละขั้นตอน:
- องค์ประกอบแรกในคำจะถูกลบออก
- ถ้าเป็น
0
ปัจจุบันการผลิตถูกข้ามไป - ถ้ามันเป็น
1
ปัจจุบันการผลิตถูกผนวกเข้ากับท้ายของคำ - การผลิตต่อไปจะเปิดใช้งาน หากนี่เป็นการผลิตครั้งสุดท้ายให้กลับไปผลิตรายการแรก
ระบบหยุดทำงานเมื่อคำว่างเปล่า
ตัวอย่าง (จาก Wikipedia):
Productions: (010, 000, 1111)
Initial word: 11001
Generation Production Word (before) Word (after)
0 010 11001 → 1001010
1 000 1001010 → 001010000
2 1111 001010000 → 01010000
3 010 01010000 → 1010000
4 000 1010000 → 010000000
5 1111 010000000 → 10000000
6 010 10000000 → 0000000010
7 000 0000000010 → 000000010
8 1111 000000010 → 00000010
9 010 00000010 → 0000010
งานของคุณถ้าคุณเลือกที่จะยอมรับมันคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้:
- รายการโปรดักชั่น
- คำเริ่มต้นและ
- รุ่น
และพิมพ์หรือส่งคืนคำที่รุ่นนั้น
ตัวอย่างเช่น,
cyclic_tag(
prod=[[0,1,0],[0,0,0],[1,1,1,1]],
word=[1,1,0,0,1],
gen=4) => [1,0,1,0,0,0,0]
รายละเอียดการใช้งาน:
ตัวอักษรไม่สำคัญ คุณอาจจะใช้
0
และ1
,True
และFalse
,T
และNIL
,A
และB
, หรือแม้กระทั่งการ1
และ0
หรือสิ่งอื่นที่คุณอาจเกิดขึ้นกับตราบใดที่คุณมีความสอดคล้องกัน อินพุตและเอาต์พุตทุกคนจะต้องใช้ตัวอักษรเดียวกันและคุณจะต้องแสดงให้เห็นว่าสิ่งที่คุณกำลังใช้สำหรับและสิ่งที่สำหรับ0
1
ความยาวของคำต้องไม่ จำกัด ขอบเขตในทางทฤษฎี นั่นคือคุณไม่สามารถฮาร์โค้ดยาวสูงสุดได้ ถ้าฉันรันโปรแกรมของคุณบนคอมพิวเตอร์ในอุดมคติที่มีหน่วยความจำไม่ จำกัด จำนวนโปรแกรมของคุณจะต้องสามารถใช้งานได้ในทางทฤษฎี (คุณอาจเพิกเฉยต่อข้อ จำกัด ของล่าม / ผู้แปล)
หากระบบที่กำหนดหยุดการทำงานก่อนถึงรุ่นที่กำหนดคุณต้องส่งคืนหรือพิมพ์คำว่างเปล่า
มีการผลิตเปล่าและคุณต้องสามารถจัดการได้ หากคุณเขียนโปรแกรมแบบเต็ม I / O ของคุณจะต้องสามารถจัดการได้
แก้ไข : เดิมทีฉันตั้งใจจะให้กำเนิด0
เพื่อเป็นคำอินพุตและการสร้าง1
เป็นผลลัพธ์ของขั้นตอนแรก คือฉันตั้งใจให้คุณคืนคอลัมน์ก่อนหน้า แต่ที่ผมยังไม่ได้รับเพียงพอที่ชัดเจนในการระบุนี้ฉันจะยอมรับทั้งสองตัวเลือก ; สำหรับแต่ละรุ่นคุณสามารถส่งคืนค่าในคอลัมน์ก่อนหรือหลัง คุณต้องระบุว่าคุณกำลังติดตามคอลัมน์หลังหากคุณทำเช่นนั้น คุณต้องสอดคล้องในคอลัมน์ที่คุณเลือกด้วย
ฉันจะให้รางวัลรหัสที่เล็กที่สุดต่อสัปดาห์นับจากนี้ (10/27/2014)