iBug को हाल ही में कंपोजिट से बनी एक लंबी पट्टी मिली, फिर भी मूल्यवान सामग्री। बार इतना लंबा है कि iBug इसे आसानी से क्रेडिट के लिए नहीं बेच सकता है, इसलिए वह इसे काटना चाहता है। बार एक ऐसी नाजुक और जादूई सामग्री से बना होता है, जिसे अगर एक हिस्सा तोड़ा जाता है, तो एक ही सामग्री से बने बार के सभी हिस्से टूट जाएंगे, जिससे मनमाने तरीके से कटौती करना मुश्किल हो जाएगा।
iBug बार को अधिक से अधिक टुकड़ों में काटना चाहता है। वह बहुत छोटे कार्यक्रमों और कोड-गोल्फिंग से भी प्यार करता है, इसलिए उसने अपनी समस्या का एक सार विश्लेषण किया।
iBug की मैजिक बार को एक स्ट्रिंग (या एक सरणी या यदि आप चाहें तो वर्णों के अनुक्रम) के रूप में दर्शाया जाता है:
aaabbccccccbbbaaacccccaabbbaaaaa
स्ट्रिंग में प्रत्येक अक्षर एक जादू सामग्री का प्रतिनिधित्व करता है। बार हमेशा RegEx से मेल खाता है ^\w*$
, इसलिए बार में 63 सामग्री हो सकती है। एक "भाग" किसी भी वर्ण का एक क्रम है जो रिक्त स्थान से अलग नहीं होता है।
iBug चाहता है कि आप एक ऐसा प्रोग्राम लिखें, जो अधिकतम भागों की गणना करता है जो उसे मिल सकता है, यदि शून्य या अधिक वर्ण सेट पूरी तरह से हटा दिए गए हैं (रिक्त स्थान द्वारा प्रतिस्थापित), और iBug को उस संख्या को बताएं।
उदाहरण 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
विवरण: यदि b
बार से पूरी तरह से हटा दिया जाता है, तो iBug को 4 भाग मिल सकते हैं। उन्होंने यह भी हटाने के द्वारा 4 भागों प्राप्त कर सकते हैं b
और c
, के रूप में नीचे दिखाया गया है
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
और यह कि इस बार से iBug के अधिकतम हिस्से मिल सकते हैं
उदाहरण 2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
विवरण: केवल अंडरस्कोर को हटाकर, iBug बार से 6 भाग प्राप्त कर सकता है और यह अधिकतम है।
उदाहरण 3:
In: __________
Out: 1
विवरण: क्या? आप यह कटौती करना चाहते हैं? यदि आप इसे बिल्कुल नहीं काटते हैं तो केवल 1 भाग प्राप्त करना संभव है।
उदाहरण 4:
In:
Out: 0
विवरण: कटौती करने के लिए कुछ भी नहीं है, इसलिए शून्य है।
वहाँ भी कुछ नियम है कि iBug कार्यक्रमों का पालन करना चाहते हैं:
iBug मानक खामियों को नापसंद करता है और उन्हें मना किया जाता है।
जब तक यह काम करता है, तब तक इसे एक पूर्ण कार्यक्रम नहीं होना चाहिए। एक फ़ंक्शन जो एक पैरामीटर से इनपुट लेता है और रिटर्न वैल्यू के माध्यम से आउटपुट देता है, उसे भी स्वीकार किया जाता है।
लचीले इनपुट और आउटपुट की अनुमति है। आपका प्रोग्राम या फ़ंक्शन एक स्ट्रिंग, या वर्णों की एक सरणी ले सकता है, या जो भी आपको सबसे आसान लगता है। आप संख्या को प्रिंट करके या उसे वापस करके आउटपुट दे सकते हैं।
नमूना परीक्षण के मामले (लेकिन इन तक सीमित नहीं)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
चूंकि यह एक कोड-गोल्फ है , प्रत्येक भाषा में सबसे छोटा कार्यक्रम (बाइट्स में) जीतता है!
अतिरिक्त
iBug अत्यधिक सराहना करता है यदि आप अपने कार्यक्रम के लिए स्पष्टीकरण प्रदान कर सकते हैं, भले ही यह आपके स्कोरिंग को प्रभावित न करे (यह बाइट्स में अभी भी लंबाई है)।
2468
, दूसरे के लिए निकालें, निकालें bd
।
2,4,6,8
पहले और b,d,f
दूसरे से हटा दें ।
123456789
उपज 5 कैसे होती है? औरaaabcccdedaaabefda
6 कैसे उपजता है? मुझे इन दो परीक्षण मामलों के लिए क्रमशः 2 और 4 मिलते हैं।