Hamming

Hamming

সহজ

ভূমিকা

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

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

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

নির্দেশনা

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

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

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

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

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

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

ইঙ্গিত

এটি এমন প্রথম অনুশীলনী যার টেস্টগুলোতে আপনাকে একটি Exception থ্রো করতে হয়। Exception সাধারণত থ্রো করা হয় এটা বোঝাতে যে কোনো প্রোগ্রাম অপ্রত্যাশিত কোনো ইনপুট বা স্টেটে পড়েছে।

পুরো ট্র্যাক জুড়ে টেস্টগুলো যাচাই করবে যে, আপনার থ্রো করা Exception-গুলো:

  1. নির্দিষ্ট একটি Java টাইপের ইনস্ট্যান্স;
  2. (ঐচ্ছিকভাবে) নির্দিষ্ট একটি মেসেজ দিয়ে ইনিশিয়ালাইজ করা।
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Java Exercism

Hamming শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Java ট্র্যাকের 26টি কনসেপ্ট158টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।