एक स्ट्रिंग को देखते हुए, उस स्ट्रिंग के "भाग्य" को वापस करें।
एक स्ट्रिंग का भाग्य, जैसा कि मैंने पूरी तरह से इस चुनौती के उद्देश्य के लिए बनाया है, एक पूर्णांक है, जैसा कि निर्धारित किया गया है:
- एक स्ट्रिंग के लिए आधार भाग्य 1 है।
- प्रत्येक लगातार पत्र के लिए यह शब्द "भाग्यशाली" (असंवेदनशील) शब्द के साथ साझा करता है, 2. भाग्य को 2 से गुणा करें। उदाहरण के लिए, यदि आपका स्ट्रिंग " लू " या "sma ck " आप 4 से गुणा करेंगे (अधिक विशेष रूप से,) 2 ^ लगातार साझा किए गए पात्रों की संख्या।)
- साझा किए गए अक्षरों को एक ही क्रम में होना चाहिए जो "भाग्यशाली" में दिखाई देता है लेकिन समान मूल्य के लिए शब्द में कहीं भी शुरू हो सकता है ("आकर्षक" में समान 8 * गुणक "cky" है)।
- यदि शब्द में कई घटनाएँ हैं जहाँ यह भाग्यशाली के साथ लगातार वर्ण साझा करता है, तो वर्णों की सबसे लंबी लगातार स्ट्रिंग का उपयोग करें।
- किसी भी पत्र के लिए यह शब्द "शगुन" के साथ साझा करता है 2 भाग्य से घटाना।
- यह किसी भी क्रम में किसी भी समय किसी भी पात्र से मेल खा सकता है। उदाहरण के लिए स्ट्रिंग "nnnnnomemenn" 24 भाग्य (12 मिलान पत्र) खो देता है
उदाहरण:
luck("lucky")
>>32
2 ^ 5 (5 लगातार अक्षर) = 32
luck("firetruck")
>>6
2 ^ 3 - 2 (से लगातार 3 पत्र uck , ई शगुन के साथ साझा)
luck("memes")
>>-7
1 - 8 (आधार राशि, 4 "शगुन" के साथ साझा)
यह कोड गोल्फ है, इसलिए सबसे कम बाइट जीतता है।
आप किसी भी तरह से इनपुट और आउटपुट कर सकते हैं - एक फ़ंक्शन लिखें, मानक इनपुट का उपयोग करें, आदि।
फ़ंक्शंस के लिए, मान लें कि जो भी डेटा प्रकार उस भाषा के लिए समझ में आता है। (उदाहरण के लिए, जावास्क्रिप्ट में, आप पास हो जाएंगे String
और वापस आ जाएंगे Number
)
संपादित करें: आप मान सकते हैं कि कोई भी इनपुट लोअरकेस है।
int8_t str_luck(const char* str);
चाहिए या यह होना चाहिए uint64_t str_luck(const char* str);
?