पृष्ठभूमि
कई गूढ़ प्रोग्रामिंग भाषाओं में संख्याएं शाब्दिक रूप से नहीं होती हैं, इसलिए आपको उन्हें रनटाइम पर गणना करना होगा; और इनमें से कई मामलों में, संख्या प्रतिनिधित्व काफी दिलचस्प हो सकता है। हमारे पास पहले से ही अंडरलोड के लिए संख्याओं का प्रतिनिधित्व करने के बारे में एक चुनौती है । यह चुनौती मॉड्यूलर एसएनयूएसपी में संख्याओं का प्रतिनिधित्व करने के बारे में है । (ध्यान दें कि इस चुनौती को पूरा करने के लिए आपको SNUSP सीखने की आवश्यकता नहीं है - आपके लिए आवश्यक सभी जानकारी विनिर्देश में है - लेकिन आपको पृष्ठभूमि दिलचस्प लग सकती है।)
काम
इस चुनौती के प्रयोजन के लिए, एक मॉड्यूलर SNUSP संख्या एक स्ट्रिंग में बाहर का गठन है @, +और =इसके अलावा कि अंतिम वर्ण कोई है, #है, और उस अंत से पहले चरित्र होना चाहिए +या =(यह नहीं हो सकता है @)। उदाहरण के लिए, मान्य नंबर शामिल @+#, ==#और @@+@=#; अमान्य नंबर के उदाहरणों में शामिल हैं +=, @@#, और +?+#।
एक मॉड्यूलर SNUSP संख्या के मूल्य की गणना निम्नानुसार की जाती है:
#का मान 0 है (यह बेस केस है)।- यदि संख्या में
=xकिसी भी स्ट्रिंग के लिए फॉर्म हैx, तो इसका मान मूल्य के बराबर हैx। - यदि संख्या में
+xकोई स्ट्रिंग हैx, तो इसका मानxप्लस 1 के मान के बराबर है । - यदि
@cxकिसी एकल वर्णcऔर किसी स्ट्रिंग के लिए संख्या का रूप है , तोxइसका मान, के मान के बराबरxहैcx।
इस चुनौती के लिए, आपको एक प्रोग्राम लिखना होगा जो इनपुट के रूप में एक नॉनवेजेटिव पूर्णांक लेता है, और एक स्ट्रिंग को आउटपुट करता है जो सबसे कम संभव मॉड्यूलर SNUSP संख्या है जिसका इनपुट के बराबर मूल्य है।
स्पष्टीकरण
- यह पूरी तरह से संभव है कि एक ही मान के साथ एक से अधिक स्ट्रिंग होंगे, और विशेष रूप से, कुछ पूर्णांकों के लिए उस मान के साथ सबसे छोटे मॉड्यूलर SNUSP संख्या के लिए एक टाई होगी। ऐसे मामले में, आप किसी भी संख्या को शामिल कर सकते हैं जिसमें टाई शामिल है।
- नंबर खोजने के लिए आपके द्वारा उपयोग किए जाने वाले एल्गोरिथ्म पर कोई प्रतिबंध नहीं है; उदाहरण के लिए, ब्रूट-फोर्सिंग स्ट्रिंग्स और उनका मूल्यांकन करना एक कानूनी रणनीति है, लेकिन खोज स्थान को कम करने के लिए ऐसा कुछ चतुर कर रहा है।
- PPCG पर हमेशा की तरह, आपका सबमिशन पूर्ण प्रोग्राम या फ़ंक्शन हो सकता है (जो भी आपकी भाषा में अधिक संक्षिप्त हो)।
- यह इनपुट और आउटपुट फॉर्मेट को हैंडल करने के बारे में समस्या नहीं है, इसलिए आप किसी नॉन-नेटिव पूर्णांक को इनपुट करने और एक स्ट्रिंग को आउटपुट करने के लिए किसी भी उचित साधन का उपयोग कर सकते हैं। नहीं है मेटा पर एक पूर्ण गाइड है, लेकिन सबसे अधिक इस्तेमाल किया कानूनी तरीकों समारोह तर्क / रिटर्न, आदेश पंक्ति तर्क, और मानक इनपुट / मानक आउटपुट शामिल हैं।
परीक्षण के मामलों
यहां पहले कुछ नंबरों के सबसे छोटे निरूपण हैं:
- 0 :
# - 1 :
+# - 2 :
++# - 3 :
+++#या@++# - 4 :
++++#या+@++#या@=++# - 5 :
@+++#या@@++# - 6 :
+@+++#या+@@++#या@=+++#या@=@++#या@@=++# - 7 :
@++++#या@+@++# - 8 :
@@+++#या@@@++# - 9 :
+@@+++#या+@@@++#या@+++++#या@++@++#या@+@=++#या@@=+++#या@@=@++# - 10 :
@=@+++#या@=@@++#या@@@=++#( यह जांच करने के लिए एक महत्वपूर्ण परीक्षण मामला है , क्योंकि सभी संभावित उत्तर शामिल हैं=) - 11 :
@+@+++#या@+@@++#या@@++++#या@@+@++# - 12 :
+@+@+++#या+@+@@++#या+@@++++#या+@@+@++#या@=+@+++#या@=+@@++#या@=@=+++#या@=@=@++#या@=@@=++#या@@=++++#या@@=+@++#या@@=@=++# - 13 :
@@@+++#या@@@@++# - 14 :
+@@@+++#या+@@@@++#या@=@++++#या@=@+@++#या@@+++++#या@@++@++#या@@+@=++# - 15 :
@+@++++#या@+@+@++#या@@=@+++#या@@=@@++#या@@@=+++#या@@@=@++#
एक बड़ा परीक्षण का मामला है, इनपुट से उत्पादन 40 होना चाहिए @@@=@@+++#, @@@=@@@++#, @@@@=@+++#, या @@@@=@@++#।
विजय की स्थिति
एक के रूप में कोड गोल्फ चुनौती, विजेता कम से कम प्रविष्टि, बाइट में मापा जाता है।
=के रूप में ही@=सही, हो जाएगा ?