อีกปัญหาหนึ่งในการแยกวิเคราะห์ Brainfuck แต่คราวนี้ ... ต่างออกไป
คุณกำลังทำงานใน Infinite Monkeys Incorporated ซึ่งเป็น บริษัท ที่ทำโปรแกรม Brainfuck เพื่อแก้ปัญหาที่น่าสนใจต่าง ๆ (โดยไม่เกิดอุบัติเหตุไม่น้อยเลยที่ บริษัท ทำโปรแกรมแบบสุ่ม) อย่างไรก็ตามดูเหมือนว่าเครื่องทัวริงที่รวดเร็วของคุณที่ใช้งาน Brainfuck เท่านั้นที่มีปัญหาเล็ก ๆ และมีราคาแพงที่มีข้อผิดพลาดทางไวยากรณ์ - สร้างหนึ่งและคอมพิวเตอร์จะระเบิด มันอาจเป็นข้อบกพร่องในการออกแบบ แต่ไม่มีใครใส่ใจที่จะหาว่าทำไมมันถึงเกิดขึ้น
เนื่องจากเครื่องทัวริง (โดยเฉพาะอย่างยิ่งเครื่องเร็ว) มีราคาแพง (หลังจากทั้งหมดเครื่องเหล่านี้มี RAM แบบอินฟินิตี้ซึ่งมีค่าใช้จ่าย) มันจะดีกว่าเพื่อให้แน่ใจว่าโปรแกรมจะไม่มีข้อผิดพลาดทางไวยากรณ์ใด ๆ บริษัท ของคุณกำลังเรียกใช้รหัสจำนวนมากดังนั้นการตรวจสอบด้วยตนเองจะไม่ทำงาน เขียนโปรแกรมที่อ่านรหัส STDIN สำหรับ Brainfuck และออกด้วยสถานะการออกที่ตั้งค่าเป็นสิ่งอื่นที่ไม่ใช่ 0 (ข้อผิดพลาด) หากโปรแกรมมีข้อผิดพลาดทางไวยากรณ์ (ตัวอย่างเช่น
]
เป็นข้อผิดพลาดทางไวยากรณ์เนื่องจากไม่มีการจับคู่[
) ออกโดยตั้งค่าสถานะการออกเป็น 0 หากโปรแกรมนั้นสมบูรณ์
[]
ตรวจสอบให้แน่ใจว่าโปรแกรมที่คุณสังเกตเห็นความผิดพลาดได้อย่างถูกต้องที่เกี่ยวข้องกับ คุณไม่ต้องการให้คอมพิวเตอร์เครื่องอื่นระเบิดใช่ไหม โอ้และทำให้แน่ใจว่ามันสั้นที่สุด - เจ้านายของคุณจ่ายค่าโปรแกรมสั้น ๆ (เพราะเขาคิดว่ามันเร็วหรืออะไร) โอ้และคุณไม่ต้องใช้รหัสใน Brainfuck (อันที่จริงแล้วคุณไม่สามารถทำได้เพราะ Brainfuck ไม่รองรับรหัสทางออก) - รหัสของคุณจะถูกเรียกใช้บนคอมพิวเตอร์ปกติ
ดังนั้นอย่างที่คุณเห็นงานของคุณคือการตรวจสอบว่าโปรแกรม Brainfuck นั้น "ถูกต้อง" (มี[]
สัญลักษณ์จับคู่) โปรดทราบว่าโปรแกรม Brainfuck สามารถมีตัวละครอื่น ๆ ได้[]
ดังนั้นอย่าปฏิเสธโปรแกรมเพียงเพราะมีคำสั่งอื่น รหัสที่เล็กที่สุดชนะ แต่คุณอาจสนใจ upvotes ต่อไป
GCD(a,b)
แทน0 != a || b
ได้