Hamming

Hamming

সহজ

ভূমিকা

আপনার শরীর তৈরি কোষ দিয়ে, আর সেই কোষগুলোর ভেতরে থাকে DNA. এই কোষগুলো নিয়মিত পুরনো হয়ে যায় এবং বদলে ফেলা দরকার হয়, যা তারা কন্যা কোষে ভাগ হয়ে সম্পন্ন করে। আসলে, গড়ে একজন মানুষের শরীরে সারা জীবনে প্রায় ১০০ কোটি কোটি কোষ বিভাজন ঘটে!

কোষ বিভক্ত হলে তাদের DNA-ও প্রতিলিপিত হয়। কখনও কখনও এই প্রক্রিয়ার মধ্যেই ভুল ঘটে যায় এবং DNA-র একেকটি টুকরোয় ভুল তথ্য এনকোড হয়ে যায়। যদি আমরা DNA-র দুটি স্ট্র্যান্ডের তুলনা করি এবং তাদের মধ্যেকার পার্থক্য গুনে দেখি, তাহলে বোঝা যায় কতগুলো ভুল ঘটেছে। একেই বলা হয় "হ্যামিং দূরত্ব"।

হ্যামিং দূরত্ব শুধু জীববিজ্ঞানেই নয়, বিজ্ঞানের অনেক ক্ষেত্রেই কাজে লাগে, তাই শব্দটি চেনা থাকলে ভালো হয় :)

নির্দেশনা

দুটি DNA স্ট্র্যান্ডের মধ্যে হ্যামিং দূরত্ব হিসাব করুন।

আমরা DNA পড়ি C, A, G আর T অক্ষর দিয়ে। দুটি স্ট্র্যান্ড দেখতে এমন হতে পারে:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

এদের মধ্যে ৭টি পার্থক্য আছে, তাই হ্যামিং দূরত্ব ৭।

ইমপ্লিমেন্টেশন নোট

হ্যামিং দূরত্ব শুধু সমান দৈর্ঘ্যের সিকোয়েন্সের ক্ষেত্রেই সংজ্ঞায়িত, তাই ভিন্ন দৈর্ঘ্যের সিকোয়েন্সের মধ্যে এটি হিসাব করার চেষ্টা কাজ করবে না।

এক্সেপশন মেসেজ

কখনও কখনও একটি এক্সেপশন রেইজ করা প্রয়োজন হয়ে পড়ে। এমন করলে সবসময় একটি অর্থবহ এরর মেসেজ অন্তর্ভুক্ত করা উচিত, যা দিয়ে বোঝা যাবে এররটির উৎস কী। এতে আপনার কোড আরও পাঠযোগ্য হয় এবং ডিবাগ করতে অনেক সুবিধা হয়। যেসব ক্ষেত্রে আপনি জানেন যে এররের উৎসটি একটি নির্দিষ্ট টাইপের হবে, সেখানে আপনি বিল্ট-ইন এরর টাইপগুলোর মধ্যে একটি রেইজ করা বেছে নিতে পারেন, তবে তার সাথে একটি অর্থবহ মেসেজও দিতে হবে।

এই নির্দিষ্ট অনুশীলনীতে পরীক্ষা করা স্ট্র্যান্ডগুলোর দৈর্ঘ্য এক না হলে raise স্টেটমেন্ট ব্যবহার করে একটি ValueError "থ্রো" করা আবশ্যক। আপনি যদি 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।