डिस्क्लेमर: लेवेंसहाइट कोडिंग लेवेंसहाइट एडिट दूरी डिस्ट्रिक से पूरी तरह से असंबंधित है ।
<इस बारे में लंबी कहानी डालें कि लेवेंसहाइट कोड की गणना यहाँ करने की आवश्यकता क्यों है।>
कोड
Levenshtein कोडिंग नॉनजेगेटिव पूर्णांकों को बाइनरी कोड असाइन करने की एक प्रणाली है जो संभाव्यता में कुछ अजीब संपत्ति को बरकरार रखती है जो इस चुनौती के लिए प्रासंगिक नहीं है। हम इस कोड को L ( n ) के रूप में निरूपित करेंगे । विकिपीडिया इसे पाँच-चरणीय प्रक्रिया के रूप में वर्णित करता है:
- चरण गणना चर C से 1 को प्रारंभ करें ।
1
कोड की शुरुआत के लिए अग्रणी के बिना संख्या का द्विआधारी प्रतिनिधित्व लिखें ।- बता दें कि M चरण 2 में लिखे गए बिट्स की संख्या है।
- यदि M 0 नहीं है , तो C को बढ़ाएं , नए नंबर के रूप में M के साथ चरण 2 से दोहराएं ।
- C
1
बिट्स और0
कोड की शुरुआत में लिखें ।
हालाँकि, कोड को पुनरावर्ती रूप से भी वर्णित किया जा सकता है:
- यदि संख्या 0 है, तो इसका कोड है
0
। 1
कोड की शुरुआत के लिए अग्रणी के बिना संख्या का द्विआधारी प्रतिनिधित्व लिखें ।- बता दें कि M चरण 2 में लिखे गए बिट्स की संख्या है।
- कोड की शुरुआत में L ( M ) लिखें ।
1
कोड की शुरुआत में थोड़ा सा लिखें ।
उदाहरण के लिए, जो लोग पसंद करते हैं, यहां L (87654321) के लिए पुनरावर्ती प्रक्रिया है , जिसमें संगोष्ठी दर्शाती है:
चुनौती
एक प्रोग्राम या फ़ंक्शन लिखें, जो एक नंबर n दिया गया है , बिटस्ट्रिंग L ( n ) को किसी भी उचित प्रारूप में आउटपुट करता है (इसमें उक्त बिट्स के साथ एक नंबर वापस करना शामिल है)। मानक खामियां, हमेशा की तरह, अस्वीकृत हैं।
उदाहरण
इनपुट: 5
आउटपुट: 1110001
इनपुट: 30
आउटपुट: 111100001110
इनपुट: 87654321
आउटपुट: 111110000101001001110010111111110110001
इनपुट: 0
आउटपुट: 0
±
एक फ़ंक्शन के बजाय एक अपर ऑपरेटर को परिभाषित करके कुछ बाइट्स बचा सकते हैंf
।