यह चुनौती इस पुरानी के समान है , लेकिन कल्पना के कुछ अस्पष्ट हिस्सों के साथ बाहर निकला है और कम सख्त I / O आवश्यकताएं हैं।
केवल मुद्रण योग्य ASCII और newlines से युक्त एक स्ट्रिंग के इनपुट को देखते हुए, इसके विभिन्न मैट्रिक्स (बाइट, वर्ड, लाइन काउंट) को आउटपुट करता है।
आपके द्वारा आउटपुट किए जाने वाले मीट्रिक इस प्रकार हैं:
बाइट की गिनती। चूंकि इनपुट स्ट्रिंग ASCII के भीतर रहती है, इसलिए यह वर्ण गणना भी है।
शब्द गणना। यह
wcएक "शब्द की परिभाषा है:" गैर-व्हाट्सएप का कोई भी क्रम। उदाहरण के लिए,abc,def"ghi"एक "शब्द" है।लाइन की गिनती। यह स्व-व्याख्यात्मक है। इनपुट में हमेशा एक अनुगामी न्यूलाइन होगी, जिसका अर्थ है कि लाइन काउंट "न्यूलाइन काउंट" का पर्याय है। एक एकल अनुगामी न्यूलाइन से अधिक कभी नहीं होगा।
आउटपुट को बिल्कुल डिफ़ॉल्ट wcआउटपुट (फ़ाइल नाम को छोड़कर) को दोहराया जाना चाहिए :
llama@llama:~$ cat /dev/urandom | tr -cd 'A-Za-z \n' | head -90 > example.txt
llama@llama:~$ wc example.txt
90 165 5501 example.txt
ध्यान दें कि लाइन काउंट पहले आता है, फिर वर्ड काउंट, और अंत में बाइट काउंट। इसके अलावा, प्रत्येक गणना को रिक्त स्थान के साथ छोड़ दिया जाना चाहिए जैसे कि वे सभी समान चौड़ाई वाले हों। उपरोक्त उदाहरण में, 55014 अंकों के साथ "सबसे लंबी" संख्या है, इसलिए 165एक स्थान और 90दो के साथ गद्देदार है । अंत में, संख्याओं को प्रत्येक संख्या के बीच के स्थान के साथ एकल स्ट्रिंग में शामिल किया जाना चाहिए।
चूंकि यह कोड-गोल्फ है , बाइट्स में सबसे छोटा कोड जीत जाएगा।
(ओह, और वैसे भी ... आप wcअपने जवाब में कमांड का उपयोग नहीं कर सकते । उस स्थिति में जो पहले से स्पष्ट नहीं था।)
परीक्षण के मामले ( \nएक नई रेखा का प्रतिनिधित्व करते हैं; आपको वैकल्पिक रूप से एक अतिरिक्त अनुगामी नई पंक्ति की आवश्यकता हो सकती है):
"a b c d\n" -> "1 4 8"
"a b c d e f\n" -> " 1 6 12"
" a b c d e f \n" -> " 1 6 16"
"a\nb\nc\nd\n" -> "4 4 8"
"a\n\n\nb\nc\nd\n" -> " 6 4 10"
"abc123{}[]()...\n" -> " 1 1 16
"\n" -> "1 0 1"
" \n" -> "1 0 4"
"\n\n\n\n\n" -> "5 0 5"
"\n\n\na\nb\n" -> "5 2 7"