การพิจารณาว่าเครื่องทัวริงหยุดการทำงานเป็นที่รู้จักกันดีว่าไม่สามารถตัดสินใจได้ แต่นั่นไม่จำเป็นต้องเป็นจริงสำหรับเครื่องที่เรียบง่าย
เครื่อง Fooเป็นเครื่องที่มีเทป จำกัด ที่ถือในเทปแต่ละคนมีจำนวนเต็มหรือสัญลักษณ์หยุดh
เช่น
2 h 1 -1
ตัวชี้คำสั่งเริ่มต้นด้วยการชี้ไปที่เซลล์แรก:
2 h 1 -1
^
ในทุกขั้นตอนตัวชี้คำสั่งจะเลื่อนไปข้างหน้าตามหมายเลขที่มันชี้ไปแล้วลบล้างจำนวนนั้น ดังนั้นหลังจากหนึ่งขั้นตอนมันจะเคลื่อนที่ไปข้างหน้า2
เซลล์และเปลี่ยน2
เป็น-2
:
-2 h 1 -1
^
เครื่อง Foo ทำเช่นนี้ต่อไปจนกระทั่งตัวชี้คำสั่งชี้ไปที่สัญลักษณ์หยุด ( h
) ดังนั้นนี่คือการดำเนินการเต็มรูปแบบของโปรแกรมนี้:
2 h 1 -1
^
-2 h 1 -1
^
-2 h -1 -1
^
-2 h -1 1
^
-2 h 1 1
^
เทปยังเป็นวงกลมดังนั้นหากตัวชี้คำสั่งเลื่อนออกจากด้านหนึ่งของเทปเทปจะไปอีกด้านหนึ่งเช่น:
3 h 1 3
^
-3 h 1 3
^
-3 h 1 -3
^
-3 h -1 -3
^
-3 h -1 3
^
3 h -1 3
^
สิ่งหนึ่งที่น่าสนใจเกี่ยวกับเครื่อง Foo เหล่านี้คือบางเครื่องไม่หยุดเช่น:
1 2 h 2
^
-1 2 h 2
^
-1 -2 h 2
^
-1 -2 h -2
^
-1 2 h -2
^
-1 2 h 2
^
โปรแกรมนี้จะวนลูปในสี่สถานะล่าสุดตลอดไป
ดังนั้นเขียนโปรแกรมที่กำหนดว่าเครื่อง Foo หยุดหรือไม่! คุณสามารถใช้รูปแบบอินพุต (สมเหตุสมผล) ใด ๆ ที่คุณต้องการสำหรับเครื่อง Foo และคุณสามารถเลือกใช้0
เป็นสัญลักษณ์หยุด คุณสามารถใช้เอาต์พุตสองแบบที่แตกต่างกันสำหรับเคสที่หยุดและเคสที่ไม่ทำงาน แน่นอนว่าโปรแกรมของคุณจะต้องส่งคำตอบในเวลาที่ จำกัด สำหรับอินพุตที่ถูกต้องทั้งหมด
นี่คือรหัสกอล์ฟดังนั้นพยายามทำให้โปรแกรมของคุณสั้นที่สุด!
กรณีทดสอบ
2 h 1 -1
Halts
3 h 1 3
Halts
h
Halts
1 1 1 1 h
Halts
2 1 3 2 1 2 h
Halts
3 2 1 1 4 h
Halts
1 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 h -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36
Halts
2 h
Does not halt
1 2 h 2
Does not halt
8 1 2 3 3 4 8 4 3 2 h
Does not halt
1 2 4 3 h 2 4 5 3
Does not halt
3 1 h 3 1 1
Does not halt
1 2 h 42
Does not halt
1 2 h 42
(ไม่หยุด)
3 2 1 1 4 h
กรณีทดสอบที่แนะนำ: อันนี้หยุดทำงาน แต่ต้องการการวนซ้ำมากกว่าสองเท่าของจำนวนองค์ประกอบ
1 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 h -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36
ซึ่งหยุดหลังจาก 786430 ขั้นตอน