Hamming

Hamming

आसान

परिचय

आपका शरीर ऐसी कोशिकाओं से बना है जिनमें DNA होता है। ये कोशिकाएँ नियमित रूप से घिस जाती हैं और उन्हें बदलने की ज़रूरत पड़ती है। वे संतान कोशिकाओं में विभाजित होकर यह काम करती हैं। वास्तव में, एक औसत मानव शरीर में जीवनभर में लगभग 10 क्वाड्रिलियन कोशिका विभाजन होते हैं!

जब कोशिकाएँ विभाजित होती हैं, तो उनके DNA की भी प्रतिकृति बनती है। कभी-कभी इस प्रक्रिया में गलतियाँ हो जाती हैं और DNA के कुछ हिस्सों में गलत जानकारी भर जाती है। अगर हम DNA की दो शृंखलाओं की तुलना करें और उनके बीच के अंतर गिनें, तो पता चलता है कि कितनी गलतियाँ हुईं। इसे हैमिंग दूरी कहते हैं।

हैमिंग दूरी केवल जीव विज्ञान ही नहीं, विज्ञान के कई क्षेत्रों में काम आती है। इसलिए इस शब्द से परिचित होना अच्छा है :)

निर्देश

दो DNA स्ट्रैंड के बीच हैमिंग दूरी की गणना कीजिए।

हम DNA को C, A, G और T अक्षरों की मदद से पढ़ते हैं। दो स्ट्रैंड कुछ ऐसे दिख सकते हैं:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

इनमें 7 अंतर हैं, इसलिए हैमिंग दूरी 7 है।

कार्यान्वयन नोट्स

हैमिंग दूरी केवल समान लंबाई वाले अनुक्रमों के लिए परिभाषित है, इसलिए अलग-अलग लंबाई वाले अनुक्रमों के बीच इसकी गणना करने की कोशिश काम नहीं करेगी।

आरक्षित पते

पहली स्ट्रिंग का बफर रैखिक मेमोरी के बाइट 1024 से 2047 तक इस्तेमाल करता है। दूसरी स्ट्रिंग का बफर रैखिक मेमोरी के बाइट 2048 से 3071 तक इस्तेमाल करता है।

आपको इन बफरों को बदलने या अतिरिक्त मेमोरी आवंटित करने की ज़रूरत नहीं होनी चाहिए।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
WebAssembly Exercism

Hamming शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और WebAssembly को 87 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।