ब्रेनफ * ck लूप प्रॉब्लम


19

मुझे एक साइबर क्लब के लिए एक समस्या है जो आपको प्रिंट करने के लिए कहता है:

ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!

29 बाइट्स में ब्रेनफ ** के का उपयोग करते हुए या ',' वर्ण का उपयोग किए बिना कम।

मेरे पास एक कार्य कोड है:

++++++++++[>++++++>+++++++++<<-]>-->.<[>-.<-]

हालाँकि मेरा लूप बहुत लंबा है, मुझे सीमा से 16 बाइट भेजना है।

क्या दूसरे और तीसरे सेल को 58 और 90 पर सेट करने का अधिक कुशल तरीका है ताकि मैं अपना दूसरा लूप चला सकूं? या क्या यह सब करने का एक बेहतर तरीका है कि मैं सिर्फ देख नहीं रहा हूं?


1
आपके प्रश्न के लिए, जबकि यह केवल चार बाइट्स बचाता है, वास्तव में 59 और 90 उत्पन्न करना और ड्रॉप -.करना .-, को बदलना बेहतर है >.<
मार्टिन एंडर

मैं +[--->++<]>++++[.-]19 बाइट्स के लिए मिला , लेकिन यह कंट्रोल
चार्ट्स

@MartinEnder हाँ, इस बारे में खेद है, मैंने आपकी टिप्पणी को अन्य पोस्ट पर देखा और इस समूह को पाया जो कि अधिक उपयुक्त था, मैं SO पर एक को हटा दूंगा क्योंकि यह कई उत्तर उत्पन्न नहीं करता था।
निक रॉड

2
मैं ईमानदारी से उत्सुक हूं कि यह "साइबर क्लब" क्या है, क्योंकि लड़के के पास कुछ बहुत अच्छे गोल्फर होने चाहिए!
Sp3000

जवाबों:


23

27 24 बाइट्स

++[<++[++<]>>>+]<[-<-.>]

एक पूरा दिन मूल रूप से ब्रूट फॉरेस्टर लिखने और परिणाम देखने में आता है। अब मैं कुछ वास्तविक काम करने के लिए वापस आ सकता हूं ... ब्रूट फोर्सिंग का एक और दिन बाद में ...

इसे ऑनलाइन आज़माएं!

घटक ++[<++[++<]>>>+]टेप को इनिशियलाइज़ करता है

[130, 0, 0, 0, 91, 59, 0]
                       ^

जो हमें चाहिए उसके लिए एकदम सही है!


8
Wizardry। (∩`-') ⊃━ ☆゚* ·
Primo

@primo निष्पक्ष होने के लिए मुझे नहीं पता कि पहली छमाही में संरचना-वार क्या हो रहा है, और मुझे लगता है कि आप अपने स्वयं के एल्गोरिदम / तकनीकों के साथ आने में सक्षम हैं, इस तथ्य को आश्चर्यजनक है :)
Sp3000

: प्रत्येक पाश के अंत में टेप codepad.org/ZoJUlQ8M । यह बिल्कुल सहज नहीं है कि यह उन मूल्यों पर समाप्त होगा जो यह करता है, या यहां तक ​​कि बिल्कुल भी;)
प्राइमो

1
एक वैकल्पिक 24:+[[>++<<]>->+>+]<[-<-.>]
प्रिमो

15

30 बाइट्स

-<-[>+>-[---<]>]>++>+[---<.->]

इसे ऑनलाइन आज़माएं!

85 और 171 ब्रेनफक ( 3 और -3 के मॉड्यूलर व्युत्क्रम ) में उत्पन्न करने के लिए काफी आसान हैं । 85 , 90 के करीब है , और 171 177 ( 59 · 3 ) के करीब है , जिसका उपयोग यहां किया जाता है। थोड़े से हैकरी के साथ, मैं इसके बजाय 88 और 176 का उत्पादन करने में सक्षम हूं ।

हालांकि लक्ष्य से एक बाइट कम है, हालांकि।

अन्य सुझाव

सामान्य तौर पर, यह एक सूची पर पुनरावृत्त करने के लिए छोटा होता है, दूसरे तरीके के बजाय एक स्थिर से गुणा करता है। यह विशेष रूप से 3 या अधिक मूल्यों के लिए सच है। उदाहरण के लिए, यह:

++++++++++[>++++++>+++++++++<<-]

के रूप में लिखा जा सकता है:

+>++++[+++++[>++++++++++<-]<]>

केवल दो आंतरिक मूल्य थे, इसलिए यह इस मामले में बहुत सुधार नहीं है। वास्तव में, सिर्फ रिफ्लेक्टिंग एक बाइट कम है:

+++++[>++++++[>++>+++<<-]<-]>

30 को 2 और 3 से गुणा करें , बजाय 10 को 6 और 9 से । मार्टिन बंटनर के सुझाव के साथ, यह पहले से ही 38 बाइट्स से नीचे है , मूल में बहुत अधिक बदलाव के बिना:

+++++[>++++++[>++>+++<<-]<-]>>-[>.-<-]

मैंने कभी भी 58 को गुणा करने और बड़ी संख्या से पुनरावृति करने के बारे में नहीं सोचा होगा, यह बहुत अधिक कुशल है।
निक रॉड

4

34 बाइट्स

आपको 11 बाइट्स बचाए, लेकिन फिर भी 5 बाइट्स बहुत लंबी ...

+[--->++<]>++++<+[--------->.-<]>.

मैंने पहले ही घंटे बिताए हैं, उम्मीद है कि कोई इस पर सुधार कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.