एन्कोडिंग कैसे काम करती है
बिट्स की एक सूची दी:
- एक प्रधान पकड़ो (के साथ शुरू
2
) - एक सूची है
- इनपुट में प्रत्येक बिट के लिए
- यदि यह पिछले बिट के समान है, तो उस प्रधानमंत्री को जोड़ें जिसे आप सूची में रख रहे हैं
- यदि यह अलग है, तो अगले प्राइम को पकड़ो और सूची में जोड़ें
- अपनी सूची के सभी नंबरों का उत्पाद लौटाएं
- पहले बिट के लिए, मान लें कि पिछला बिट था
0
नोट: ये चरण केवल दृष्टांत उद्देश्यों के लिए हैं, आपको इनका पालन करने की आवश्यकता नहीं है।
उदाहरण
Input: 001
hold 2
0: add 2 to the list
0: add 2 to the list
1: hold 3, add 3 to the list
list: 2,2,3
Output: 12
Input: 1101
hold 2
1: hold 3, add 3 to the list
1: add 3 to the list
0: hold 5, add 5 to the list
1: hold 7, add 7 to the list
list: 3,3,5,7
Output: 315
कुछ और उदाहरण:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
चुनौती
इस एन्कोडिंग विधि के लिए एक एनकोडर और एक डिकोडर लिखें ।
(डिकोडर एनकोडर की प्रक्रिया को उलट देता है)।
इनपुट आउटपुट
एनकोडर किसी भी उचित प्रारूप में इनपुट ले सकता है
एनकोडर को एक पूर्णांक या एक स्ट्रिंग का उत्पादन करना चाहिए
डिकोडर को उसी प्रारूप में इनपुट लेना चाहिए जो एनकोडर विवाद करता है
डिकोडर को उसी प्रारूप को आउटपुट करना होगा जो एन्कोडर इनपुट के रूप में लेता है
दूसरे शब्दों में decoder( encoder( input ) ) === input
टिप्पणियाँ
- डिकोडर मान सकता है कि इसका इनपुट डीकोडेबल है
- आपका जवाब केवल पूर्णांकों से निपटने के लिए है कि अपनी भाषा मूल रूप से उपयोग कर (बिना समर्थन कर सकते हैं है
long
,bigInt
, आदि),, उचित होगा यदि आप भाषा केवल ints ऊपर 1 करने के लिए समर्थन करता है, हो सकता है एक उत्तर पोस्ट पर पुनर्विचार
स्कोरिंग
आपका स्कोर एनकोडर और डिकोडर के बाइट्स में लंबाई का योग है।
यदि आपको एक मॉड्यूल आयात करने की आवश्यकता है, तो आयात को केवल एक बार गिना जा सकता है बशर्ते कि आपका एन्कोडर और डिकोडर एक ही फाइल में सह-अस्तित्व में हो और पुन: उपयोग किया जा सके (जैसे फ़ंक्शन)।
डिफ़ॉल्ट कमियां निषिद्ध हैं।
यह कोड-गोल्फ है इसलिए हर भाषा के लिए सबसे छोटा स्कोर जीतता है।