Hamming

Hamming

आसान

परिचय

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

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

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

निर्देश

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

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

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

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

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

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

एक्सेप्शन के संदेश

कभी-कभी एक्सेप्शन उठाना ज़रूरी हो जाता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश शामिल करना चाहिए, जो बताए कि एरर का स्रोत क्या है। इससे आपका कोड पढ़ने में आसान हो जाता है और डीबगिंग में बहुत मदद मिलती है। कुछ मामलों में आपको पहले से पता होता है कि एरर का स्रोत किसी खास टाइप का ही होगा। ऐसी जगह आप पहले से मौजूद एरर टाइप में से कोई एक उठा सकते हैं, लेकिन संदेश फिर भी अर्थपूर्ण होना चाहिए।

इस अभ्यास में, जब जाँचे जा रहे स्ट्रैंड की लंबाई समान न हो, तब आपको raise स्टेटमेंट की मदद से ValueError उठाना है। टेस्ट तभी पास होंगे जब आप exception को raise भी करेंगे और उसके साथ एक संदेश भी शामिल करेंगे।

संदेश के साथ ValueError उठाने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Python Exercism

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

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