अभी तक एक और Brainfuck पार्सिंग समस्या है, लेकिन इस बार ... अलग।
आप विभिन्न दिलचस्प समस्याओं को हल करने के लिए, ब्रेनफक प्रोग्राम बनाने वाली कंपनी, इनफिनिट मंकी इनकॉर्पोरेटेड में काम कर रहे हैं (दुर्घटना से, कोई कम नहीं - आखिरकार, कंपनी यादृच्छिक प्रोग्राम बनाती है)। हालांकि, ऐसा प्रतीत होता है कि आपकी फास्ट ट्यूरिंग मशीनें जो केवल ब्रेनफैक को निष्पादित करती हैं, उनमें सिंटैक्स त्रुटियों के साथ एक छोटी और महंगी समस्या है - एक बनाते हैं, और कंप्यूटर फट जाता है। यह शायद एक डिजाइन दोष है, लेकिन किसी ने भी यह जानने की जहमत नहीं उठाई कि ऐसा क्यों होता है।
चूंकि ट्यूरिंग मशीन (विशेष रूप से तेज़ वाले) महंगी हैं (आखिरकार, उनके पास अनंत रैम है जो लागत है), यह सुनिश्चित करना बेहतर होगा कि कोड को निष्पादित करने से पहले प्रोग्राम में कोई सिंटैक्स त्रुटियां नहीं हैं। आपकी कंपनी बहुत सारे कोड चलाने जा रही है, इसलिए मैन्युअल सत्यापन काम नहीं करेगा। एक प्रोग्राम लिखें, जो ब्रेनफक कोड के लिए STDIN को पढ़ता है, और 0 (त्रुटि) के अलावा किसी भी चीज़ से बाहर निकलने की स्थिति के साथ बाहर निकलता है यदि प्रोग्राम में कोई सिंटैक्स त्रुटि है (उदाहरण के लिए,
]
एक सिंटैक्स त्रुटि है, क्योंकि कोई मेल नहीं है[
)। यदि प्रोग्राम पूरी तरह से ठीक है, तो एग्जिट स्टेटस से 0 पर सेट करें।सुनिश्चित करें कि आपके प्रोग्राम में गलतियाँ शामिल हैं
[]
। आप एक और कंप्यूटर को विस्फोट नहीं करना चाहेंगे, क्या आप करेंगे? ओह, और सुनिश्चित करें कि यह जितना संभव हो उतना छोटा है - आपका बॉस छोटे कार्यक्रमों के लिए भुगतान करता है (क्योंकि वह सोचता है कि वे तेज हैं, या कुछ और)। ओह, और आपको Brainfuck में कोड करने की आवश्यकता नहीं है (वास्तव में, आप नहीं कर सकते, क्योंकि Brainfuck निकास कोड का समर्थन नहीं करता है) - आपका कोड सामान्य कंप्यूटर पर चलाया जाएगा।
इसलिए, जैसा कि आप देख सकते हैं, आपका काम यह जांचना है कि क्या ब्रेनफक प्रोग्राम "वैध" है (जोड़े गए []
प्रतीकों का)। कृपया ध्यान दें कि Brainfuck प्रोग्राम में अन्य वर्ण हो सकते हैं []
, इसलिए प्रोग्राम को केवल इसलिए मना न करें क्योंकि इसमें अन्य कमांड हैं। सबसे छोटा कोड जीतता है, लेकिन शायद आप किसी भी तरह से upvotes के बारे में अधिक परवाह करेंगे।
GCD(a,b)
इसके बजाय उपयोग कर सकता हूं 0 != a || b
।