परिचय
यहां अधिकांश कोड-गोल्फर अपने सबमिशन में स्पष्टीकरण जोड़ते हैं, इसलिए यह समझना आसान है कि क्या चल रहा है। आमतौर पर कोडलाइन बायीं ओर जाती हैं और किसी प्रकार के विभाजक के साथ दाईं ओर समान स्पष्टीकरण। यह सुंदर दिखने के लिए, विभाजक सभी एक ही स्तंभ पर हैं। साथ ही लंबी व्याख्या पाठ आमतौर पर अगली पंक्ति से लिपटी होती है, इसलिए पाठकों को सब कुछ पढ़ने के लिए क्षैतिज रूप से स्क्रॉल करने की आवश्यकता नहीं होती है।
हालाँकि, जब आप इस स्पष्टीकरण को संपादित करना चाहते हैं क्योंकि आपने कुछ पागल गोल्फ बनाए हैं, तो आप अक्सर अपने स्पष्टीकरण को फिर से सुंदर बनाने के लिए समय व्यतीत करते हैं। चूंकि यह एक बहुत दोहराव वाला काम है, इसलिए आप इसके लिए एक कार्यक्रम लिखना चाहते हैं।
चुनौती
स्पष्टीकरण और एक विभाजक के साथ कोड की कई पंक्तियों को देखते हुए, स्पष्टीकरण के साथ अच्छी तरह से स्वरूपित कोड का उत्पादन करते हैं।
उदाहरण
इनपुट
shM-crz1dc4। "ANDBYOROF # z = इनपुट rz1 # इनपुट को अपरकेस में बदलें सीडी # रिक्त स्थान पर इनपुट विभाजित करें c4। "ANDBYOROF # पैक स्ट्रिंग से शब्दों की एक सूची बनाएं जिसे नजरअंदाज किया जाएगा - # उन शब्दों को फ़िल्टर करें hM # केवल सभी शब्दों का पहला अक्षर लें s # उन्हें एक स्ट्रिंग में शामिल करें
उत्पादन
shM-crz1dc4। "ANDBYOROF # z = इनपुट rz1 # इनपुट को अपरकेस में बदलें सीडी # रिक्त स्थान पर इनपुट विभाजित करें c4। "ANDBYOROF # पैक स्ट्रिंग से शब्दों की एक सूची बनाएं जो कि होगी # अवहेलना करना - # उन शब्दों को फ़िल्टर करें hM # केवल सभी शब्दों का पहला अक्षर लें s # उन्हें एक स्ट्रिंग में शामिल करें
पहले वाले के लिए एक कुकी जो यह पता लगा सकती है कि यह कोड क्या करता है।
स्वरूपण एल्गोरिथ्म
- सबसे लंबी कोड-लाइन (स्पष्टीकरण और कोड और विभाजक के बीच रिक्त स्थान को छोड़कर) का पता लगाएं।
- इस कोड-लाइन के बाद 5 रिक्त स्थान जोड़ें और स्पष्टीकरण के साथ संबंधित विभाजक को जोड़ दें। यह अब संदर्भ रेखा है।
- हर दूसरी पंक्ति को इस संदर्भ पंक्ति में समायोजित करें, ताकि अलग करने वाले सभी एक ही कॉलम में हों।
- सभी वर्णों को लपेटें जो 93 वर्णों से अधिक नई पंक्ति में निम्न प्रकार से हैं:
- अंतिम शब्द जो कॉलम 93 या उससे कम पर है, उसे खोजें।
- इस एक के बाद सभी शब्द लें और उन्हें अग्रणी विभाजक और सही रिक्ति के साथ एक नई पंक्ति में लपेटें। उन दो शब्दों के बीच की जगह को हटाना पड़ता है, इसलिए पहली पंक्ति एक शब्द चरित्र के साथ समाप्त होती है और दूसरी पंक्ति विभाजक के बाद एक के साथ शुरू होती है।
- यदि परिणामी रेखा अभी भी 93 वर्णों से अधिक लंबी है तो फिर से वही करें जब तक कि प्रत्येक रेखा 94 वर्णों से नीचे न हो।
टिप्पणियाँ
- एक शब्द में गैर-व्हाट्सएप अक्षर होते हैं। शब्दों को एक ही स्थान से अलग किया जाता है।
- रैपिंग शब्द हमेशा संभव है। इसका मतलब है कि कोई भी शब्द इतना लंबा नहीं है कि यह रैपिंग को असंभव बना दे।
- इनपुट में केवल मुद्रण योग्य ASCII होगा और इसमें कोई अनुगामी व्हाट्सएप नहीं होगा
- विभाजक केवल प्रति पंक्ति एक बार दिखाई देगा।
- जबकि स्पष्टीकरण में असीमित लंबाई हो सकती है, विभाजक और कोड में केवल
93 - 5 = 87
चार्ट की अधिकतम अधिकतम लंबाई हो सकती है । 5 चार्ट कोड और विभाजक के बीच रिक्त स्थान हैं। कोड और विभाजक हमेशा कम से कम एक वर्ण लंबा होगा। - इनपुट में खाली लाइनें हो सकती हैं। उन में कोई वर्ण नहीं होगा (यदि आप मल्टीलाइन स्ट्रिंग के रूप में इनपुट लेते हैं तो एक नई पंक्ति को छोड़कर)। उन खाली लाइनों को आउटपुट में भी मौजूद होना चाहिए।
- हर लाइन में कुछ कोड, एक विभाजक और एक स्पष्टीकरण होगा। अपवाद खाली लाइनें हैं।
- आप किसी भी उचित प्रारूप में इनपुट ले सकते हैं, जब तक कि यह पूर्व-संसाधित न हो। अपने उत्तर में स्पष्ट करें कि आप किसका उपयोग करते हैं।
- आउटपुट एक मल्टीलाइन स्ट्रिंग या स्ट्रिंग्स की एक सूची हो सकती है।
नियम
- कार्य या पूर्ण कार्यक्रम की अनुमति है।
- इनपुट / आउटपुट के लिए डिफ़ॉल्ट नियम ।
- मानक खामियां लागू होती हैं।
- यह कोड-गोल्फ है , इसलिए सबसे कम बाइट-काउंट जीतता है। टाईब्रेकर पहले जमा करना है।
परीक्षण के मामलों
इनपुट प्रारूप यहां स्ट्रिंग की एक सूची है जो लाइनों का प्रतिनिधित्व करता है और विभाजक के लिए एक स्ट्रिंग है। दोनों को एक अल्पविराम द्वारा अलग किया जाता है। आउटपुट स्ट्रिंग्स की एक सूची है।
['shM-crz1dc4। "ANDBYOROF # z = इनपुट', '', 'rz1 # इनपुट को अपरकेस में बदलें', 'cd # स्प्लिट इनपुट ऑन स्पेस', 'c4।" और NYOROF # पैक से शब्दों की एक सूची बनाएं। स्ट्रिंग जिसे अनदेखा किया जाएगा ',' - # उन शब्दों को फ़िल्टर करें ',' hM # केवल सभी शब्दों का पहला अक्षर लें ',' s # उन्हें एक स्ट्रिंग में शामिल करें '], "#" -> [' shM-crz1dr4 । "ANDBYOROF # z = input ',' ',' rz1 # इनपुट को अपरकेस में बदलें ',' cd # स्प्लिट इनपुट ऑन स्पेस ',' c4।" ANDBYOROF # पैक स्ट्रिंग से शब्दों की एक सूची बनाएं जो कि होगी '। , ' # अवहेलना करना', '- # उन शब्दों को फ़िल्टर करें ',' hM # केवल सभी शब्दों का पहला अक्षर लें ',' s # उन्हें एक स्ट्रिंग में शामिल करें]] ['कोडेकोडबॉस ई # स्पष्टीकरण', 'sdf dsf sdf e # ए वेरी वेरी वेरी वेरी वेरी वेरी वेरी इन लॉन्ग लॉन्ग लॉन्ग लॉन्ग एक्सप्लेनेशन एंड लॉन्ग लॉन्ग लॉन्ग एक्सप्लेन।' ',' ' अधिक कोडे # और कुछ और स्पष्टीकरण '], "ई #" -> [' कोडकोडोडबेक ई # स्पष्टीकरण ',' sdf dsf sdf e # ए वेरी वेरी वेरी वेरी वेरी वेरी वेरी वेरी लॉन्ग लॉन्ग लॉन्ग ',' ई # लॉन्ग लंबी लंबी लंबी लंबी लंबी व्याख्या और यह लंबे समय तक ',' ई # और लंबे समय तक ',' ',' कुछ और कोड ई # और कुछ और स्पष्टीकरण 'पर बनी रहती है।
हैप्पी कोडिंग!
length of the longest code-line + 5
। यह उन लाइनों पर भी लागू होता है जिनमें केवल एक स्पष्टीकरण होता है, क्योंकि वे लिपटे हुए थे।