कभी-कभी ब्रेनफॉक कोड लिखते समय, आप डिबगिंग को प्रोत्साहित करने के लिए इसे जरूरत से ज्यादा लंबा करने की जरूरत महसूस करते हैं । तुम ><
वहाँ में एक plopping द्वारा यह कर सकता है , लेकिन क्या मज़ा है? अपने कोड को पढ़ने में किसी को भ्रमित करने के लिए आपको कुछ अधिक और कम NOPey की आवश्यकता होगी।
ब्रेनफक के लिए त्वरित परिचय
Brainfuck 1993 में शहरी मुलर द्वारा बनाई गई एक गूढ़ प्रोग्रामिंग भाषा है, और अपने अतिसूक्ष्मवाद के लिए उल्लेखनीय है। (विकिपीडिया)
Brainfuck आठ आज्ञाओं पर आधारित भाषा है +-><,.[]
:। कोड को ट्यूरिंग मशीन की तरह चलाया जाता है: एक अनंत टेप जिस पर मूल्यों को बदला जा सकता है। इस चुनौती में, हम पहले चार पर ध्यान केंद्रित करेंगे:
+ increment the value at the pointer
- decrement the value at the pointer
> move the pointer right
< move the pointer left
ब्रेनफॉक एनओपी
एक ब्रेनफॉक एनओपी ब्रेनफक वर्णों का एक क्रम है, जो किसी भी राज्य से निष्पादित होने पर, राज्य में कोई परिवर्तन नहीं करता है। वे ऊपर वर्णित चार वर्णों से मिलकर बने हैं।
चुनौती
चुनौती एक प्रोग्राम या फ़ंक्शन लिखना है, जिसे निष्पादित करते समय, दी गई लंबाई का एक यादृच्छिक ब्रेनफैक एनओपी उत्पन्न करता है।
इनपुट
आपको इनपुट के रूप में एक नॉनवेजेटिव यहां तक कि पूर्णांक प्राप्त होगा n
। (विषम के लिए NOP असंभव हैं n
।)
उत्पादन
आप लंबाई के एक यादृच्छिक brainfuck एनओपी का उत्पादन करेंगे n
।
नियम
- एनओपी की परिभाषा: जब कार्यक्रम का आउटपुट किसी ब्रेनफक प्रोग्राम में किसी भी बिंदु पर डाला जाता है, तो उक्त प्रोग्राम का व्यवहार किसी भी तरह से नहीं बदलना चाहिए। दूसरे शब्दों में, यह दुभाषिया की स्थिति को नहीं बदलना चाहिए।
- ध्यान दें कि उदाहरण के
+>-<
लिए गलत है, क्योंकि यह दो कोशिकाओं के मूल्यों को बिना बदले उन्हें बदल देता है। कृपया पोस्ट करने से पहले इन के लिए अपने समाधान का परीक्षण करें। - यह भी ध्यान दें कि
+>-<->+<
एक एनओपी है जिसे केवल हटाकर कुछ भी नहीं किया जा सकता है><
<>
+-
-+
। इस प्रकार, आप एक एल्गोरिथ्म का उपयोग नहीं कर सकते हैं जो सिर्फ एक दूसरे के अंदर इन सम्मिलित करता है।
- ध्यान दें कि उदाहरण के
- लंबाई के प्रत्येक वैध एनओपी के
n
आउटपुट में प्रदर्शित होने का एक नॉनज़रो मौका होना चाहिए। वितरण में एकरूपता नहीं है, हालांकि। - प्रश्न में ब्रेनफैक दुभाषिया में मनमानी परिशुद्धता कोशिकाओं का एक दोगुना अनंत टेप है। यही है, आप दोनों दिशाओं में असीम रूप से जा सकते हैं, और प्रत्येक सेल को अनिश्चित काल के लिए बढ़ा / घटा सकते हैं।
- मेरी मशीन पर = 1 के लिए
n
कार्यक्रम 1 मिनट के भीतर समाप्त होना चाहिए , इसलिए सभी संभावित एनओपी उत्पन्न नहीं कर रहे हैं और एक उठा रहे हैं। - यदि अमान्य इनपुट (नॉन-पूर्णांक, ऋणात्मक, विषम, आदि) दिए गए हैं तो आप दुर्घटना सहित कुछ भी कर सकते हैं।
स्कोरिंग
यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे कम जवाब जीतता है।
उदाहरण
यहाँ n
= 4 के लिए सभी मान्य आउटपुट हैं :
++-- +-+- +--+ --++ -+-+ -++-
>><< ><>< ><<> <<>> <><> <>><
><+- ><-+ <>+- <>-+
>+-< >-+< <+-> <-+>
+><- -><+ +<>- -<>+
+->< -+>< +-<> -+<>
यहाँ n
= 20 के लिए कुछ संभावित आउटपुट दिए गए हैं :
+>>->+<->-<<<->>++<<
>+>-<+<->+-<>->+<-<+
+--+-++--++-+--+-++-
>>>>>>>>>+-<<<<<<<<<
.
एक साइड-इफेक्ट है, ,
एक मूल्य को ओवरराइट करता है जिसे उपयोग किए बिना पुनर्प्राप्त नहीं किया जा सकता है []
। लेकिन []
एक मूल्य को शून्य पर सेट कर देगा। यह []
तब तक एक मान को अधिलेखित कर देता है (इसलिए हमें इसे पुनर्प्राप्त करने के लिए दूसरे की आवश्यकता होगी ) जब तक हम यह सुनिश्चित नहीं कर सकते कि प्रभावित सेल शून्य से शुरू होना था। हालांकि, हमें इस तरह की सेल की तलाश करनी होगी, जैसे कि कुछ भी हो [>]
, और हम जिस स्थिति से आए हैं, उस पर वापस लौटना असंभव है।
+-<>
जो आपके द्वारा पूछे गए उपयोग नहीं करता है :a